<!DOCTYPE html>
<html>
<head><meta charset="utf-8" />
<title>ch10-neural-nets</title>

<script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.1.10/require.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>

<style type="text/css">
    /*!
*
* Twitter Bootstrap
*
*/
/*!
 * Bootstrap v3.3.6 (http://getbootstrap.com)
 * Copyright 2011-2015 Twitter, Inc.
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 */
/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */
html {
  font-family: sans-serif;
  -ms-text-size-adjust: 100%;
  -webkit-text-size-adjust: 100%;
}
body {
  margin: 0;
}
article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
main,
menu,
nav,
section,
summary {
  display: block;
}
audio,
canvas,
progress,
video {
  display: inline-block;
  vertical-align: baseline;
}
audio:not([controls]) {
  display: none;
  height: 0;
}
[hidden],
template {
  display: none;
}
a {
  background-color: transparent;
}
a:active,
a:hover {
  outline: 0;
}
abbr[title] {
  border-bottom: 1px dotted;
}
b,
strong {
  font-weight: bold;
}
dfn {
  font-style: italic;
}
h1 {
  font-size: 2em;
  margin: 0.67em 0;
}
mark {
  background: #ff0;
  color: #000;
}
small {
  font-size: 80%;
}
sub,
sup {
  font-size: 75%;
  line-height: 0;
  position: relative;
  vertical-align: baseline;
}
sup {
  top: -0.5em;
}
sub {
  bottom: -0.25em;
}
img {
  border: 0;
}
svg:not(:root) {
  overflow: hidden;
}
figure {
  margin: 1em 40px;
}
hr {
  box-sizing: content-box;
  height: 0;
}
pre {
  overflow: auto;
}
code,
kbd,
pre,
samp {
  font-family: monospace, monospace;
  font-size: 1em;
}
button,
input,
optgroup,
select,
textarea {
  color: inherit;
  font: inherit;
  margin: 0;
}
button {
  overflow: visible;
}
button,
select {
  text-transform: none;
}
button,
html input[type="button"],
input[type="reset"],
input[type="submit"] {
  -webkit-appearance: button;
  cursor: pointer;
}
button[disabled],
html input[disabled] {
  cursor: default;
}
button::-moz-focus-inner,
input::-moz-focus-inner {
  border: 0;
  padding: 0;
}
input {
  line-height: normal;
}
input[type="checkbox"],
input[type="radio"] {
  box-sizing: border-box;
  padding: 0;
}
input[type="number"]::-webkit-inner-spin-button,
input[type="number"]::-webkit-outer-spin-button {
  height: auto;
}
input[type="search"] {
  -webkit-appearance: textfield;
  box-sizing: content-box;
}
input[type="search"]::-webkit-search-cancel-button,
input[type="search"]::-webkit-search-decoration {
  -webkit-appearance: none;
}
fieldset {
  border: 1px solid #c0c0c0;
  margin: 0 2px;
  padding: 0.35em 0.625em 0.75em;
}
legend {
  border: 0;
  padding: 0;
}
textarea {
  overflow: auto;
}
optgroup {
  font-weight: bold;
}
table {
  border-collapse: collapse;
  border-spacing: 0;
}
td,
th {
  padding: 0;
}
/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */
@media print {
  *,
  *:before,
  *:after {
    background: transparent !important;
    color: #000 !important;
    box-shadow: none !important;
    text-shadow: none !important;
  }
  a,
  a:visited {
    text-decoration: underline;
  }
  a[href]:after {
    content: " (" attr(href) ")";
  }
  abbr[title]:after {
    content: " (" attr(title) ")";
  }
  a[href^="#"]:after,
  a[href^="javascript:"]:after {
    content: "";
  }
  pre,
  blockquote {
    border: 1px solid #999;
    page-break-inside: avoid;
  }
  thead {
    display: table-header-group;
  }
  tr,
  img {
    page-break-inside: avoid;
  }
  img {
    max-width: 100% !important;
  }
  p,
  h2,
  h3 {
    orphans: 3;
    widows: 3;
  }
  h2,
  h3 {
    page-break-after: avoid;
  }
  .navbar {
    display: none;
  }
  .btn > .caret,
  .dropup > .btn > .caret {
    border-top-color: #000 !important;
  }
  .label {
    border: 1px solid #000;
  }
  .table {
    border-collapse: collapse !important;
  }
  .table td,
  .table th {
    background-color: #fff !important;
  }
  .table-bordered th,
  .table-bordered td {
    border: 1px solid #ddd !important;
  }
}
@font-face {
  font-family: 'Glyphicons Halflings';
  src: url('../components/bootstrap/fonts/glyphicons-halflings-regular.eot');
  src: url('../components/bootstrap/fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../components/bootstrap/fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../components/bootstrap/fonts/glyphicons-halflings-regular.woff') format('woff'), url('../components/bootstrap/fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../components/bootstrap/fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');
}
.glyphicon {
  position: relative;
  top: 1px;
  display: inline-block;
  font-family: 'Glyphicons Halflings';
  font-style: normal;
  font-weight: normal;
  line-height: 1;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
.glyphicon-asterisk:before {
  content: "\002a";
}
.glyphicon-plus:before {
  content: "\002b";
}
.glyphicon-euro:before,
.glyphicon-eur:before {
  content: "\20ac";
}
.glyphicon-minus:before {
  content: "\2212";
}
.glyphicon-cloud:before {
  content: "\2601";
}
.glyphicon-envelope:before {
  content: "\2709";
}
.glyphicon-pencil:before {
  content: "\270f";
}
.glyphicon-glass:before {
  content: "\e001";
}
.glyphicon-music:before {
  content: "\e002";
}
.glyphicon-search:before {
  content: "\e003";
}
.glyphicon-heart:before {
  content: "\e005";
}
.glyphicon-star:before {
  content: "\e006";
}
.glyphicon-star-empty:before {
  content: "\e007";
}
.glyphicon-user:before {
  content: "\e008";
}
.glyphicon-film:before {
  content: "\e009";
}
.glyphicon-th-large:before {
  content: "\e010";
}
.glyphicon-th:before {
  content: "\e011";
}
.glyphicon-th-list:before {
  content: "\e012";
}
.glyphicon-ok:before {
  content: "\e013";
}
.glyphicon-remove:before {
  content: "\e014";
}
.glyphicon-zoom-in:before {
  content: "\e015";
}
.glyphicon-zoom-out:before {
  content: "\e016";
}
.glyphicon-off:before {
  content: "\e017";
}
.glyphicon-signal:before {
  content: "\e018";
}
.glyphicon-cog:before {
  content: "\e019";
}
.glyphicon-trash:before {
  content: "\e020";
}
.glyphicon-home:before {
  content: "\e021";
}
.glyphicon-file:before {
  content: "\e022";
}
.glyphicon-time:before {
  content: "\e023";
}
.glyphicon-road:before {
  content: "\e024";
}
.glyphicon-download-alt:before {
  content: "\e025";
}
.glyphicon-download:before {
  content: "\e026";
}
.glyphicon-upload:before {
  content: "\e027";
}
.glyphicon-inbox:before {
  content: "\e028";
}
.glyphicon-play-circle:before {
  content: "\e029";
}
.glyphicon-repeat:before {
  content: "\e030";
}
.glyphicon-refresh:before {
  content: "\e031";
}
.glyphicon-list-alt:before {
  content: "\e032";
}
.glyphicon-lock:before {
  content: "\e033";
}
.glyphicon-flag:before {
  content: "\e034";
}
.glyphicon-headphones:before {
  content: "\e035";
}
.glyphicon-volume-off:before {
  content: "\e036";
}
.glyphicon-volume-down:before {
  content: "\e037";
}
.glyphicon-volume-up:before {
  content: "\e038";
}
.glyphicon-qrcode:before {
  content: "\e039";
}
.glyphicon-barcode:before {
  content: "\e040";
}
.glyphicon-tag:before {
  content: "\e041";
}
.glyphicon-tags:before {
  content: "\e042";
}
.glyphicon-book:before {
  content: "\e043";
}
.glyphicon-bookmark:before {
  content: "\e044";
}
.glyphicon-print:before {
  content: "\e045";
}
.glyphicon-camera:before {
  content: "\e046";
}
.glyphicon-font:before {
  content: "\e047";
}
.glyphicon-bold:before {
  content: "\e048";
}
.glyphicon-italic:before {
  content: "\e049";
}
.glyphicon-text-height:before {
  content: "\e050";
}
.glyphicon-text-width:before {
  content: "\e051";
}
.glyphicon-align-left:before {
  content: "\e052";
}
.glyphicon-align-center:before {
  content: "\e053";
}
.glyphicon-align-right:before {
  content: "\e054";
}
.glyphicon-align-justify:before {
  content: "\e055";
}
.glyphicon-list:before {
  content: "\e056";
}
.glyphicon-indent-left:before {
  content: "\e057";
}
.glyphicon-indent-right:before {
  content: "\e058";
}
.glyphicon-facetime-video:before {
  content: "\e059";
}
.glyphicon-picture:before {
  content: "\e060";
}
.glyphicon-map-marker:before {
  content: "\e062";
}
.glyphicon-adjust:before {
  content: "\e063";
}
.glyphicon-tint:before {
  content: "\e064";
}
.glyphicon-edit:before {
  content: "\e065";
}
.glyphicon-share:before {
  content: "\e066";
}
.glyphicon-check:before {
  content: "\e067";
}
.glyphicon-move:before {
  content: "\e068";
}
.glyphicon-step-backward:before {
  content: "\e069";
}
.glyphicon-fast-backward:before {
  content: "\e070";
}
.glyphicon-backward:before {
  content: "\e071";
}
.glyphicon-play:before {
  content: "\e072";
}
.glyphicon-pause:before {
  content: "\e073";
}
.glyphicon-stop:before {
  content: "\e074";
}
.glyphicon-forward:before {
  content: "\e075";
}
.glyphicon-fast-forward:before {
  content: "\e076";
}
.glyphicon-step-forward:before {
  content: "\e077";
}
.glyphicon-eject:before {
  content: "\e078";
}
.glyphicon-chevron-left:before {
  content: "\e079";
}
.glyphicon-chevron-right:before {
  content: "\e080";
}
.glyphicon-plus-sign:before {
  content: "\e081";
}
.glyphicon-minus-sign:before {
  content: "\e082";
}
.glyphicon-remove-sign:before {
  content: "\e083";
}
.glyphicon-ok-sign:before {
  content: "\e084";
}
.glyphicon-question-sign:before {
  content: "\e085";
}
.glyphicon-info-sign:before {
  content: "\e086";
}
.glyphicon-screenshot:before {
  content: "\e087";
}
.glyphicon-remove-circle:before {
  content: "\e088";
}
.glyphicon-ok-circle:before {
  content: "\e089";
}
.glyphicon-ban-circle:before {
  content: "\e090";
}
.glyphicon-arrow-left:before {
  content: "\e091";
}
.glyphicon-arrow-right:before {
  content: "\e092";
}
.glyphicon-arrow-up:before {
  content: "\e093";
}
.glyphicon-arrow-down:before {
  content: "\e094";
}
.glyphicon-share-alt:before {
  content: "\e095";
}
.glyphicon-resize-full:before {
  content: "\e096";
}
.glyphicon-resize-small:before {
  content: "\e097";
}
.glyphicon-exclamation-sign:before {
  content: "\e101";
}
.glyphicon-gift:before {
  content: "\e102";
}
.glyphicon-leaf:before {
  content: "\e103";
}
.glyphicon-fire:before {
  content: "\e104";
}
.glyphicon-eye-open:before {
  content: "\e105";
}
.glyphicon-eye-close:before {
  content: "\e106";
}
.glyphicon-warning-sign:before {
  content: "\e107";
}
.glyphicon-plane:before {
  content: "\e108";
}
.glyphicon-calendar:before {
  content: "\e109";
}
.glyphicon-random:before {
  content: "\e110";
}
.glyphicon-comment:before {
  content: "\e111";
}
.glyphicon-magnet:before {
  content: "\e112";
}
.glyphicon-chevron-up:before {
  content: "\e113";
}
.glyphicon-chevron-down:before {
  content: "\e114";
}
.glyphicon-retweet:before {
  content: "\e115";
}
.glyphicon-shopping-cart:before {
  content: "\e116";
}
.glyphicon-folder-close:before {
  content: "\e117";
}
.glyphicon-folder-open:before {
  content: "\e118";
}
.glyphicon-resize-vertical:before {
  content: "\e119";
}
.glyphicon-resize-horizontal:before {
  content: "\e120";
}
.glyphicon-hdd:before {
  content: "\e121";
}
.glyphicon-bullhorn:before {
  content: "\e122";
}
.glyphicon-bell:before {
  content: "\e123";
}
.glyphicon-certificate:before {
  content: "\e124";
}
.glyphicon-thumbs-up:before {
  content: "\e125";
}
.glyphicon-thumbs-down:before {
  content: "\e126";
}
.glyphicon-hand-right:before {
  content: "\e127";
}
.glyphicon-hand-left:before {
  content: "\e128";
}
.glyphicon-hand-up:before {
  content: "\e129";
}
.glyphicon-hand-down:before {
  content: "\e130";
}
.glyphicon-circle-arrow-right:before {
  content: "\e131";
}
.glyphicon-circle-arrow-left:before {
  content: "\e132";
}
.glyphicon-circle-arrow-up:before {
  content: "\e133";
}
.glyphicon-circle-arrow-down:before {
  content: "\e134";
}
.glyphicon-globe:before {
  content: "\e135";
}
.glyphicon-wrench:before {
  content: "\e136";
}
.glyphicon-tasks:before {
  content: "\e137";
}
.glyphicon-filter:before {
  content: "\e138";
}
.glyphicon-briefcase:before {
  content: "\e139";
}
.glyphicon-fullscreen:before {
  content: "\e140";
}
.glyphicon-dashboard:before {
  content: "\e141";
}
.glyphicon-paperclip:before {
  content: "\e142";
}
.glyphicon-heart-empty:before {
  content: "\e143";
}
.glyphicon-link:before {
  content: "\e144";
}
.glyphicon-phone:before {
  content: "\e145";
}
.glyphicon-pushpin:before {
  content: "\e146";
}
.glyphicon-usd:before {
  content: "\e148";
}
.glyphicon-gbp:before {
  content: "\e149";
}
.glyphicon-sort:before {
  content: "\e150";
}
.glyphicon-sort-by-alphabet:before {
  content: "\e151";
}
.glyphicon-sort-by-alphabet-alt:before {
  content: "\e152";
}
.glyphicon-sort-by-order:before {
  content: "\e153";
}
.glyphicon-sort-by-order-alt:before {
  content: "\e154";
}
.glyphicon-sort-by-attributes:before {
  content: "\e155";
}
.glyphicon-sort-by-attributes-alt:before {
  content: "\e156";
}
.glyphicon-unchecked:before {
  content: "\e157";
}
.glyphicon-expand:before {
  content: "\e158";
}
.glyphicon-collapse-down:before {
  content: "\e159";
}
.glyphicon-collapse-up:before {
  content: "\e160";
}
.glyphicon-log-in:before {
  content: "\e161";
}
.glyphicon-flash:before {
  content: "\e162";
}
.glyphicon-log-out:before {
  content: "\e163";
}
.glyphicon-new-window:before {
  content: "\e164";
}
.glyphicon-record:before {
  content: "\e165";
}
.glyphicon-save:before {
  content: "\e166";
}
.glyphicon-open:before {
  content: "\e167";
}
.glyphicon-saved:before {
  content: "\e168";
}
.glyphicon-import:before {
  content: "\e169";
}
.glyphicon-export:before {
  content: "\e170";
}
.glyphicon-send:before {
  content: "\e171";
}
.glyphicon-floppy-disk:before {
  content: "\e172";
}
.glyphicon-floppy-saved:before {
  content: "\e173";
}
.glyphicon-floppy-remove:before {
  content: "\e174";
}
.glyphicon-floppy-save:before {
  content: "\e175";
}
.glyphicon-floppy-open:before {
  content: "\e176";
}
.glyphicon-credit-card:before {
  content: "\e177";
}
.glyphicon-transfer:before {
  content: "\e178";
}
.glyphicon-cutlery:before {
  content: "\e179";
}
.glyphicon-header:before {
  content: "\e180";
}
.glyphicon-compressed:before {
  content: "\e181";
}
.glyphicon-earphone:before {
  content: "\e182";
}
.glyphicon-phone-alt:before {
  content: "\e183";
}
.glyphicon-tower:before {
  content: "\e184";
}
.glyphicon-stats:before {
  content: "\e185";
}
.glyphicon-sd-video:before {
  content: "\e186";
}
.glyphicon-hd-video:before {
  content: "\e187";
}
.glyphicon-subtitles:before {
  content: "\e188";
}
.glyphicon-sound-stereo:before {
  content: "\e189";
}
.glyphicon-sound-dolby:before {
  content: "\e190";
}
.glyphicon-sound-5-1:before {
  content: "\e191";
}
.glyphicon-sound-6-1:before {
  content: "\e192";
}
.glyphicon-sound-7-1:before {
  content: "\e193";
}
.glyphicon-copyright-mark:before {
  content: "\e194";
}
.glyphicon-registration-mark:before {
  content: "\e195";
}
.glyphicon-cloud-download:before {
  content: "\e197";
}
.glyphicon-cloud-upload:before {
  content: "\e198";
}
.glyphicon-tree-conifer:before {
  content: "\e199";
}
.glyphicon-tree-deciduous:before {
  content: "\e200";
}
.glyphicon-cd:before {
  content: "\e201";
}
.glyphicon-save-file:before {
  content: "\e202";
}
.glyphicon-open-file:before {
  content: "\e203";
}
.glyphicon-level-up:before {
  content: "\e204";
}
.glyphicon-copy:before {
  content: "\e205";
}
.glyphicon-paste:before {
  content: "\e206";
}
.glyphicon-alert:before {
  content: "\e209";
}
.glyphicon-equalizer:before {
  content: "\e210";
}
.glyphicon-king:before {
  content: "\e211";
}
.glyphicon-queen:before {
  content: "\e212";
}
.glyphicon-pawn:before {
  content: "\e213";
}
.glyphicon-bishop:before {
  content: "\e214";
}
.glyphicon-knight:before {
  content: "\e215";
}
.glyphicon-baby-formula:before {
  content: "\e216";
}
.glyphicon-tent:before {
  content: "\26fa";
}
.glyphicon-blackboard:before {
  content: "\e218";
}
.glyphicon-bed:before {
  content: "\e219";
}
.glyphicon-apple:before {
  content: "\f8ff";
}
.glyphicon-erase:before {
  content: "\e221";
}
.glyphicon-hourglass:before {
  content: "\231b";
}
.glyphicon-lamp:before {
  content: "\e223";
}
.glyphicon-duplicate:before {
  content: "\e224";
}
.glyphicon-piggy-bank:before {
  content: "\e225";
}
.glyphicon-scissors:before {
  content: "\e226";
}
.glyphicon-bitcoin:before {
  content: "\e227";
}
.glyphicon-btc:before {
  content: "\e227";
}
.glyphicon-xbt:before {
  content: "\e227";
}
.glyphicon-yen:before {
  content: "\00a5";
}
.glyphicon-jpy:before {
  content: "\00a5";
}
.glyphicon-ruble:before {
  content: "\20bd";
}
.glyphicon-rub:before {
  content: "\20bd";
}
.glyphicon-scale:before {
  content: "\e230";
}
.glyphicon-ice-lolly:before {
  content: "\e231";
}
.glyphicon-ice-lolly-tasted:before {
  content: "\e232";
}
.glyphicon-education:before {
  content: "\e233";
}
.glyphicon-option-horizontal:before {
  content: "\e234";
}
.glyphicon-option-vertical:before {
  content: "\e235";
}
.glyphicon-menu-hamburger:before {
  content: "\e236";
}
.glyphicon-modal-window:before {
  content: "\e237";
}
.glyphicon-oil:before {
  content: "\e238";
}
.glyphicon-grain:before {
  content: "\e239";
}
.glyphicon-sunglasses:before {
  content: "\e240";
}
.glyphicon-text-size:before {
  content: "\e241";
}
.glyphicon-text-color:before {
  content: "\e242";
}
.glyphicon-text-background:before {
  content: "\e243";
}
.glyphicon-object-align-top:before {
  content: "\e244";
}
.glyphicon-object-align-bottom:before {
  content: "\e245";
}
.glyphicon-object-align-horizontal:before {
  content: "\e246";
}
.glyphicon-object-align-left:before {
  content: "\e247";
}
.glyphicon-object-align-vertical:before {
  content: "\e248";
}
.glyphicon-object-align-right:before {
  content: "\e249";
}
.glyphicon-triangle-right:before {
  content: "\e250";
}
.glyphicon-triangle-left:before {
  content: "\e251";
}
.glyphicon-triangle-bottom:before {
  content: "\e252";
}
.glyphicon-triangle-top:before {
  content: "\e253";
}
.glyphicon-console:before {
  content: "\e254";
}
.glyphicon-superscript:before {
  content: "\e255";
}
.glyphicon-subscript:before {
  content: "\e256";
}
.glyphicon-menu-left:before {
  content: "\e257";
}
.glyphicon-menu-right:before {
  content: "\e258";
}
.glyphicon-menu-down:before {
  content: "\e259";
}
.glyphicon-menu-up:before {
  content: "\e260";
}
* {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}
*:before,
*:after {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}
html {
  font-size: 10px;
  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
body {
  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-size: 13px;
  line-height: 1.42857143;
  color: #000;
  background-color: #fff;
}
input,
button,
select,
textarea {
  font-family: inherit;
  font-size: inherit;
  line-height: inherit;
}
a {
  color: #337ab7;
  text-decoration: none;
}
a:hover,
a:focus {
  color: #23527c;
  text-decoration: underline;
}
a:focus {
  outline: thin dotted;
  outline: 5px auto -webkit-focus-ring-color;
  outline-offset: -2px;
}
figure {
  margin: 0;
}
img {
  vertical-align: middle;
}
.img-responsive,
.thumbnail > img,
.thumbnail a > img,
.carousel-inner > .item > img,
.carousel-inner > .item > a > img {
  display: block;
  max-width: 100%;
  height: auto;
}
.img-rounded {
  border-radius: 3px;
}
.img-thumbnail {
  padding: 4px;
  line-height: 1.42857143;
  background-color: #fff;
  border: 1px solid #ddd;
  border-radius: 2px;
  -webkit-transition: all 0.2s ease-in-out;
  -o-transition: all 0.2s ease-in-out;
  transition: all 0.2s ease-in-out;
  display: inline-block;
  max-width: 100%;
  height: auto;
}
.img-circle {
  border-radius: 50%;
}
hr {
  margin-top: 18px;
  margin-bottom: 18px;
  border: 0;
  border-top: 1px solid #eeeeee;
}
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  border: 0;
}
.sr-only-focusable:active,
.sr-only-focusable:focus {
  position: static;
  width: auto;
  height: auto;
  margin: 0;
  overflow: visible;
  clip: auto;
}
[role="button"] {
  cursor: pointer;
}
h1,
h2,
h3,
h4,
h5,
h6,
.h1,
.h2,
.h3,
.h4,
.h5,
.h6 {
  font-family: inherit;
  font-weight: 500;
  line-height: 1.1;
  color: inherit;
}
h1 small,
h2 small,
h3 small,
h4 small,
h5 small,
h6 small,
.h1 small,
.h2 small,
.h3 small,
.h4 small,
.h5 small,
.h6 small,
h1 .small,
h2 .small,
h3 .small,
h4 .small,
h5 .small,
h6 .small,
.h1 .small,
.h2 .small,
.h3 .small,
.h4 .small,
.h5 .small,
.h6 .small {
  font-weight: normal;
  line-height: 1;
  color: #777777;
}
h1,
.h1,
h2,
.h2,
h3,
.h3 {
  margin-top: 18px;
  margin-bottom: 9px;
}
h1 small,
.h1 small,
h2 small,
.h2 small,
h3 small,
.h3 small,
h1 .small,
.h1 .small,
h2 .small,
.h2 .small,
h3 .small,
.h3 .small {
  font-size: 65%;
}
h4,
.h4,
h5,
.h5,
h6,
.h6 {
  margin-top: 9px;
  margin-bottom: 9px;
}
h4 small,
.h4 small,
h5 small,
.h5 small,
h6 small,
.h6 small,
h4 .small,
.h4 .small,
h5 .small,
.h5 .small,
h6 .small,
.h6 .small {
  font-size: 75%;
}
h1,
.h1 {
  font-size: 33px;
}
h2,
.h2 {
  font-size: 27px;
}
h3,
.h3 {
  font-size: 23px;
}
h4,
.h4 {
  font-size: 17px;
}
h5,
.h5 {
  font-size: 13px;
}
h6,
.h6 {
  font-size: 12px;
}
p {
  margin: 0 0 9px;
}
.lead {
  margin-bottom: 18px;
  font-size: 14px;
  font-weight: 300;
  line-height: 1.4;
}
@media (min-width: 768px) {
  .lead {
    font-size: 19.5px;
  }
}
small,
.small {
  font-size: 92%;
}
mark,
.mark {
  background-color: #fcf8e3;
  padding: .2em;
}
.text-left {
  text-align: left;
}
.text-right {
  text-align: right;
}
.text-center {
  text-align: center;
}
.text-justify {
  text-align: justify;
}
.text-nowrap {
  white-space: nowrap;
}
.text-lowercase {
  text-transform: lowercase;
}
.text-uppercase {
  text-transform: uppercase;
}
.text-capitalize {
  text-transform: capitalize;
}
.text-muted {
  color: #777777;
}
.text-primary {
  color: #337ab7;
}
a.text-primary:hover,
a.text-primary:focus {
  color: #286090;
}
.text-success {
  color: #3c763d;
}
a.text-success:hover,
a.text-success:focus {
  color: #2b542c;
}
.text-info {
  color: #31708f;
}
a.text-info:hover,
a.text-info:focus {
  color: #245269;
}
.text-warning {
  color: #8a6d3b;
}
a.text-warning:hover,
a.text-warning:focus {
  color: #66512c;
}
.text-danger {
  color: #a94442;
}
a.text-danger:hover,
a.text-danger:focus {
  color: #843534;
}
.bg-primary {
  color: #fff;
  background-color: #337ab7;
}
a.bg-primary:hover,
a.bg-primary:focus {
  background-color: #286090;
}
.bg-success {
  background-color: #dff0d8;
}
a.bg-success:hover,
a.bg-success:focus {
  background-color: #c1e2b3;
}
.bg-info {
  background-color: #d9edf7;
}
a.bg-info:hover,
a.bg-info:focus {
  background-color: #afd9ee;
}
.bg-warning {
  background-color: #fcf8e3;
}
a.bg-warning:hover,
a.bg-warning:focus {
  background-color: #f7ecb5;
}
.bg-danger {
  background-color: #f2dede;
}
a.bg-danger:hover,
a.bg-danger:focus {
  background-color: #e4b9b9;
}
.page-header {
  padding-bottom: 8px;
  margin: 36px 0 18px;
  border-bottom: 1px solid #eeeeee;
}
ul,
ol {
  margin-top: 0;
  margin-bottom: 9px;
}
ul ul,
ol ul,
ul ol,
ol ol {
  margin-bottom: 0;
}
.list-unstyled {
  padding-left: 0;
  list-style: none;
}
.list-inline {
  padding-left: 0;
  list-style: none;
  margin-left: -5px;
}
.list-inline > li {
  display: inline-block;
  padding-left: 5px;
  padding-right: 5px;
}
dl {
  margin-top: 0;
  margin-bottom: 18px;
}
dt,
dd {
  line-height: 1.42857143;
}
dt {
  font-weight: bold;
}
dd {
  margin-left: 0;
}
@media (min-width: 541px) {
  .dl-horizontal dt {
    float: left;
    width: 160px;
    clear: left;
    text-align: right;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
  .dl-horizontal dd {
    margin-left: 180px;
  }
}
abbr[title],
abbr[data-original-title] {
  cursor: help;
  border-bottom: 1px dotted #777777;
}
.initialism {
  font-size: 90%;
  text-transform: uppercase;
}
blockquote {
  padding: 9px 18px;
  margin: 0 0 18px;
  font-size: inherit;
  border-left: 5px solid #eeeeee;
}
blockquote p:last-child,
blockquote ul:last-child,
blockquote ol:last-child {
  margin-bottom: 0;
}
blockquote footer,
blockquote small,
blockquote .small {
  display: block;
  font-size: 80%;
  line-height: 1.42857143;
  color: #777777;
}
blockquote footer:before,
blockquote small:before,
blockquote .small:before {
  content: '\2014 \00A0';
}
.blockquote-reverse,
blockquote.pull-right {
  padding-right: 15px;
  padding-left: 0;
  border-right: 5px solid #eeeeee;
  border-left: 0;
  text-align: right;
}
.blockquote-reverse footer:before,
blockquote.pull-right footer:before,
.blockquote-reverse small:before,
blockquote.pull-right small:before,
.blockquote-reverse .small:before,
blockquote.pull-right .small:before {
  content: '';
}
.blockquote-reverse footer:after,
blockquote.pull-right footer:after,
.blockquote-reverse small:after,
blockquote.pull-right small:after,
.blockquote-reverse .small:after,
blockquote.pull-right .small:after {
  content: '\00A0 \2014';
}
address {
  margin-bottom: 18px;
  font-style: normal;
  line-height: 1.42857143;
}
code,
kbd,
pre,
samp {
  font-family: monospace;
}
code {
  padding: 2px 4px;
  font-size: 90%;
  color: #c7254e;
  background-color: #f9f2f4;
  border-radius: 2px;
}
kbd {
  padding: 2px 4px;
  font-size: 90%;
  color: #888;
  background-color: transparent;
  border-radius: 1px;
  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);
}
kbd kbd {
  padding: 0;
  font-size: 100%;
  font-weight: bold;
  box-shadow: none;
}
pre {
  display: block;
  padding: 8.5px;
  margin: 0 0 9px;
  font-size: 12px;
  line-height: 1.42857143;
  word-break: break-all;
  word-wrap: break-word;
  color: #333333;
  background-color: #f5f5f5;
  border: 1px solid #ccc;
  border-radius: 2px;
}
pre code {
  padding: 0;
  font-size: inherit;
  color: inherit;
  white-space: pre-wrap;
  background-color: transparent;
  border-radius: 0;
}
.pre-scrollable {
  max-height: 340px;
  overflow-y: scroll;
}
.container {
  margin-right: auto;
  margin-left: auto;
  padding-left: 0px;
  padding-right: 0px;
}
@media (min-width: 768px) {
  .container {
    width: 768px;
  }
}
@media (min-width: 992px) {
  .container {
    width: 940px;
  }
}
@media (min-width: 1200px) {
  .container {
    width: 1140px;
  }
}
.container-fluid {
  margin-right: auto;
  margin-left: auto;
  padding-left: 0px;
  padding-right: 0px;
}
.row {
  margin-left: 0px;
  margin-right: 0px;
}
.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {
  position: relative;
  min-height: 1px;
  padding-left: 0px;
  padding-right: 0px;
}
.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {
  float: left;
}
.col-xs-12 {
  width: 100%;
}
.col-xs-11 {
  width: 91.66666667%;
}
.col-xs-10 {
  width: 83.33333333%;
}
.col-xs-9 {
  width: 75%;
}
.col-xs-8 {
  width: 66.66666667%;
}
.col-xs-7 {
  width: 58.33333333%;
}
.col-xs-6 {
  width: 50%;
}
.col-xs-5 {
  width: 41.66666667%;
}
.col-xs-4 {
  width: 33.33333333%;
}
.col-xs-3 {
  width: 25%;
}
.col-xs-2 {
  width: 16.66666667%;
}
.col-xs-1 {
  width: 8.33333333%;
}
.col-xs-pull-12 {
  right: 100%;
}
.col-xs-pull-11 {
  right: 91.66666667%;
}
.col-xs-pull-10 {
  right: 83.33333333%;
}
.col-xs-pull-9 {
  right: 75%;
}
.col-xs-pull-8 {
  right: 66.66666667%;
}
.col-xs-pull-7 {
  right: 58.33333333%;
}
.col-xs-pull-6 {
  right: 50%;
}
.col-xs-pull-5 {
  right: 41.66666667%;
}
.col-xs-pull-4 {
  right: 33.33333333%;
}
.col-xs-pull-3 {
  right: 25%;
}
.col-xs-pull-2 {
  right: 16.66666667%;
}
.col-xs-pull-1 {
  right: 8.33333333%;
}
.col-xs-pull-0 {
  right: auto;
}
.col-xs-push-12 {
  left: 100%;
}
.col-xs-push-11 {
  left: 91.66666667%;
}
.col-xs-push-10 {
  left: 83.33333333%;
}
.col-xs-push-9 {
  left: 75%;
}
.col-xs-push-8 {
  left: 66.66666667%;
}
.col-xs-push-7 {
  left: 58.33333333%;
}
.col-xs-push-6 {
  left: 50%;
}
.col-xs-push-5 {
  left: 41.66666667%;
}
.col-xs-push-4 {
  left: 33.33333333%;
}
.col-xs-push-3 {
  left: 25%;
}
.col-xs-push-2 {
  left: 16.66666667%;
}
.col-xs-push-1 {
  left: 8.33333333%;
}
.col-xs-push-0 {
  left: auto;
}
.col-xs-offset-12 {
  margin-left: 100%;
}
.col-xs-offset-11 {
  margin-left: 91.66666667%;
}
.col-xs-offset-10 {
  margin-left: 83.33333333%;
}
.col-xs-offset-9 {
  margin-left: 75%;
}
.col-xs-offset-8 {
  margin-left: 66.66666667%;
}
.col-xs-offset-7 {
  margin-left: 58.33333333%;
}
.col-xs-offset-6 {
  margin-left: 50%;
}
.col-xs-offset-5 {
  margin-left: 41.66666667%;
}
.col-xs-offset-4 {
  margin-left: 33.33333333%;
}
.col-xs-offset-3 {
  margin-left: 25%;
}
.col-xs-offset-2 {
  margin-left: 16.66666667%;
}
.col-xs-offset-1 {
  margin-left: 8.33333333%;
}
.col-xs-offset-0 {
  margin-left: 0%;
}
@media (min-width: 768px) {
  .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {
    float: left;
  }
  .col-sm-12 {
    width: 100%;
  }
  .col-sm-11 {
    width: 91.66666667%;
  }
  .col-sm-10 {
    width: 83.33333333%;
  }
  .col-sm-9 {
    width: 75%;
  }
  .col-sm-8 {
    width: 66.66666667%;
  }
  .col-sm-7 {
    width: 58.33333333%;
  }
  .col-sm-6 {
    width: 50%;
  }
  .col-sm-5 {
    width: 41.66666667%;
  }
  .col-sm-4 {
    width: 33.33333333%;
  }
  .col-sm-3 {
    width: 25%;
  }
  .col-sm-2 {
    width: 16.66666667%;
  }
  .col-sm-1 {
    width: 8.33333333%;
  }
  .col-sm-pull-12 {
    right: 100%;
  }
  .col-sm-pull-11 {
    right: 91.66666667%;
  }
  .col-sm-pull-10 {
    right: 83.33333333%;
  }
  .col-sm-pull-9 {
    right: 75%;
  }
  .col-sm-pull-8 {
    right: 66.66666667%;
  }
  .col-sm-pull-7 {
    right: 58.33333333%;
  }
  .col-sm-pull-6 {
    right: 50%;
  }
  .col-sm-pull-5 {
    right: 41.66666667%;
  }
  .col-sm-pull-4 {
    right: 33.33333333%;
  }
  .col-sm-pull-3 {
    right: 25%;
  }
  .col-sm-pull-2 {
    right: 16.66666667%;
  }
  .col-sm-pull-1 {
    right: 8.33333333%;
  }
  .col-sm-pull-0 {
    right: auto;
  }
  .col-sm-push-12 {
    left: 100%;
  }
  .col-sm-push-11 {
    left: 91.66666667%;
  }
  .col-sm-push-10 {
    left: 83.33333333%;
  }
  .col-sm-push-9 {
    left: 75%;
  }
  .col-sm-push-8 {
    left: 66.66666667%;
  }
  .col-sm-push-7 {
    left: 58.33333333%;
  }
  .col-sm-push-6 {
    left: 50%;
  }
  .col-sm-push-5 {
    left: 41.66666667%;
  }
  .col-sm-push-4 {
    left: 33.33333333%;
  }
  .col-sm-push-3 {
    left: 25%;
  }
  .col-sm-push-2 {
    left: 16.66666667%;
  }
  .col-sm-push-1 {
    left: 8.33333333%;
  }
  .col-sm-push-0 {
    left: auto;
  }
  .col-sm-offset-12 {
    margin-left: 100%;
  }
  .col-sm-offset-11 {
    margin-left: 91.66666667%;
  }
  .col-sm-offset-10 {
    margin-left: 83.33333333%;
  }
  .col-sm-offset-9 {
    margin-left: 75%;
  }
  .col-sm-offset-8 {
    margin-left: 66.66666667%;
  }
  .col-sm-offset-7 {
    margin-left: 58.33333333%;
  }
  .col-sm-offset-6 {
    margin-left: 50%;
  }
  .col-sm-offset-5 {
    margin-left: 41.66666667%;
  }
  .col-sm-offset-4 {
    margin-left: 33.33333333%;
  }
  .col-sm-offset-3 {
    margin-left: 25%;
  }
  .col-sm-offset-2 {
    margin-left: 16.66666667%;
  }
  .col-sm-offset-1 {
    margin-left: 8.33333333%;
  }
  .col-sm-offset-0 {
    margin-left: 0%;
  }
}
@media (min-width: 992px) {
  .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {
    float: left;
  }
  .col-md-12 {
    width: 100%;
  }
  .col-md-11 {
    width: 91.66666667%;
  }
  .col-md-10 {
    width: 83.33333333%;
  }
  .col-md-9 {
    width: 75%;
  }
  .col-md-8 {
    width: 66.66666667%;
  }
  .col-md-7 {
    width: 58.33333333%;
  }
  .col-md-6 {
    width: 50%;
  }
  .col-md-5 {
    width: 41.66666667%;
  }
  .col-md-4 {
    width: 33.33333333%;
  }
  .col-md-3 {
    width: 25%;
  }
  .col-md-2 {
    width: 16.66666667%;
  }
  .col-md-1 {
    width: 8.33333333%;
  }
  .col-md-pull-12 {
    right: 100%;
  }
  .col-md-pull-11 {
    right: 91.66666667%;
  }
  .col-md-pull-10 {
    right: 83.33333333%;
  }
  .col-md-pull-9 {
    right: 75%;
  }
  .col-md-pull-8 {
    right: 66.66666667%;
  }
  .col-md-pull-7 {
    right: 58.33333333%;
  }
  .col-md-pull-6 {
    right: 50%;
  }
  .col-md-pull-5 {
    right: 41.66666667%;
  }
  .col-md-pull-4 {
    right: 33.33333333%;
  }
  .col-md-pull-3 {
    right: 25%;
  }
  .col-md-pull-2 {
    right: 16.66666667%;
  }
  .col-md-pull-1 {
    right: 8.33333333%;
  }
  .col-md-pull-0 {
    right: auto;
  }
  .col-md-push-12 {
    left: 100%;
  }
  .col-md-push-11 {
    left: 91.66666667%;
  }
  .col-md-push-10 {
    left: 83.33333333%;
  }
  .col-md-push-9 {
    left: 75%;
  }
  .col-md-push-8 {
    left: 66.66666667%;
  }
  .col-md-push-7 {
    left: 58.33333333%;
  }
  .col-md-push-6 {
    left: 50%;
  }
  .col-md-push-5 {
    left: 41.66666667%;
  }
  .col-md-push-4 {
    left: 33.33333333%;
  }
  .col-md-push-3 {
    left: 25%;
  }
  .col-md-push-2 {
    left: 16.66666667%;
  }
  .col-md-push-1 {
    left: 8.33333333%;
  }
  .col-md-push-0 {
    left: auto;
  }
  .col-md-offset-12 {
    margin-left: 100%;
  }
  .col-md-offset-11 {
    margin-left: 91.66666667%;
  }
  .col-md-offset-10 {
    margin-left: 83.33333333%;
  }
  .col-md-offset-9 {
    margin-left: 75%;
  }
  .col-md-offset-8 {
    margin-left: 66.66666667%;
  }
  .col-md-offset-7 {
    margin-left: 58.33333333%;
  }
  .col-md-offset-6 {
    margin-left: 50%;
  }
  .col-md-offset-5 {
    margin-left: 41.66666667%;
  }
  .col-md-offset-4 {
    margin-left: 33.33333333%;
  }
  .col-md-offset-3 {
    margin-left: 25%;
  }
  .col-md-offset-2 {
    margin-left: 16.66666667%;
  }
  .col-md-offset-1 {
    margin-left: 8.33333333%;
  }
  .col-md-offset-0 {
    margin-left: 0%;
  }
}
@media (min-width: 1200px) {
  .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {
    float: left;
  }
  .col-lg-12 {
    width: 100%;
  }
  .col-lg-11 {
    width: 91.66666667%;
  }
  .col-lg-10 {
    width: 83.33333333%;
  }
  .col-lg-9 {
    width: 75%;
  }
  .col-lg-8 {
    width: 66.66666667%;
  }
  .col-lg-7 {
    width: 58.33333333%;
  }
  .col-lg-6 {
    width: 50%;
  }
  .col-lg-5 {
    width: 41.66666667%;
  }
  .col-lg-4 {
    width: 33.33333333%;
  }
  .col-lg-3 {
    width: 25%;
  }
  .col-lg-2 {
    width: 16.66666667%;
  }
  .col-lg-1 {
    width: 8.33333333%;
  }
  .col-lg-pull-12 {
    right: 100%;
  }
  .col-lg-pull-11 {
    right: 91.66666667%;
  }
  .col-lg-pull-10 {
    right: 83.33333333%;
  }
  .col-lg-pull-9 {
    right: 75%;
  }
  .col-lg-pull-8 {
    right: 66.66666667%;
  }
  .col-lg-pull-7 {
    right: 58.33333333%;
  }
  .col-lg-pull-6 {
    right: 50%;
  }
  .col-lg-pull-5 {
    right: 41.66666667%;
  }
  .col-lg-pull-4 {
    right: 33.33333333%;
  }
  .col-lg-pull-3 {
    right: 25%;
  }
  .col-lg-pull-2 {
    right: 16.66666667%;
  }
  .col-lg-pull-1 {
    right: 8.33333333%;
  }
  .col-lg-pull-0 {
    right: auto;
  }
  .col-lg-push-12 {
    left: 100%;
  }
  .col-lg-push-11 {
    left: 91.66666667%;
  }
  .col-lg-push-10 {
    left: 83.33333333%;
  }
  .col-lg-push-9 {
    left: 75%;
  }
  .col-lg-push-8 {
    left: 66.66666667%;
  }
  .col-lg-push-7 {
    left: 58.33333333%;
  }
  .col-lg-push-6 {
    left: 50%;
  }
  .col-lg-push-5 {
    left: 41.66666667%;
  }
  .col-lg-push-4 {
    left: 33.33333333%;
  }
  .col-lg-push-3 {
    left: 25%;
  }
  .col-lg-push-2 {
    left: 16.66666667%;
  }
  .col-lg-push-1 {
    left: 8.33333333%;
  }
  .col-lg-push-0 {
    left: auto;
  }
  .col-lg-offset-12 {
    margin-left: 100%;
  }
  .col-lg-offset-11 {
    margin-left: 91.66666667%;
  }
  .col-lg-offset-10 {
    margin-left: 83.33333333%;
  }
  .col-lg-offset-9 {
    margin-left: 75%;
  }
  .col-lg-offset-8 {
    margin-left: 66.66666667%;
  }
  .col-lg-offset-7 {
    margin-left: 58.33333333%;
  }
  .col-lg-offset-6 {
    margin-left: 50%;
  }
  .col-lg-offset-5 {
    margin-left: 41.66666667%;
  }
  .col-lg-offset-4 {
    margin-left: 33.33333333%;
  }
  .col-lg-offset-3 {
    margin-left: 25%;
  }
  .col-lg-offset-2 {
    margin-left: 16.66666667%;
  }
  .col-lg-offset-1 {
    margin-left: 8.33333333%;
  }
  .col-lg-offset-0 {
    margin-left: 0%;
  }
}
table {
  background-color: transparent;
}
caption {
  padding-top: 8px;
  padding-bottom: 8px;
  color: #777777;
  text-align: left;
}
th {
  text-align: left;
}
.table {
  width: 100%;
  max-width: 100%;
  margin-bottom: 18px;
}
.table > thead > tr > th,
.table > tbody > tr > th,
.table > tfoot > tr > th,
.table > thead > tr > td,
.table > tbody > tr > td,
.table > tfoot > tr > td {
  padding: 8px;
  line-height: 1.42857143;
  vertical-align: top;
  border-top: 1px solid #ddd;
}
.table > thead > tr > th {
  vertical-align: bottom;
  border-bottom: 2px solid #ddd;
}
.table > caption + thead > tr:first-child > th,
.table > colgroup + thead > tr:first-child > th,
.table > thead:first-child > tr:first-child > th,
.table > caption + thead > tr:first-child > td,
.table > colgroup + thead > tr:first-child > td,
.table > thead:first-child > tr:first-child > td {
  border-top: 0;
}
.table > tbody + tbody {
  border-top: 2px solid #ddd;
}
.table .table {
  background-color: #fff;
}
.table-condensed > thead > tr > th,
.table-condensed > tbody > tr > th,
.table-condensed > tfoot > tr > th,
.table-condensed > thead > tr > td,
.table-condensed > tbody > tr > td,
.table-condensed > tfoot > tr > td {
  padding: 5px;
}
.table-bordered {
  border: 1px solid #ddd;
}
.table-bordered > thead > tr > th,
.table-bordered > tbody > tr > th,
.table-bordered > tfoot > tr > th,
.table-bordered > thead > tr > td,
.table-bordered > tbody > tr > td,
.table-bordered > tfoot > tr > td {
  border: 1px solid #ddd;
}
.table-bordered > thead > tr > th,
.table-bordered > thead > tr > td {
  border-bottom-width: 2px;
}
.table-striped > tbody > tr:nth-of-type(odd) {
  background-color: #f9f9f9;
}
.table-hover > tbody > tr:hover {
  background-color: #f5f5f5;
}
table col[class*="col-"] {
  position: static;
  float: none;
  display: table-column;
}
table td[class*="col-"],
table th[class*="col-"] {
  position: static;
  float: none;
  display: table-cell;
}
.table > thead > tr > td.active,
.table > tbody > tr > td.active,
.table > tfoot > tr > td.active,
.table > thead > tr > th.active,
.table > tbody > tr > th.active,
.table > tfoot > tr > th.active,
.table > thead > tr.active > td,
.table > tbody > tr.active > td,
.table > tfoot > tr.active > td,
.table > thead > tr.active > th,
.table > tbody > tr.active > th,
.table > tfoot > tr.active > th {
  background-color: #f5f5f5;
}
.table-hover > tbody > tr > td.active:hover,
.table-hover > tbody > tr > th.active:hover,
.table-hover > tbody > tr.active:hover > td,
.table-hover > tbody > tr:hover > .active,
.table-hover > tbody > tr.active:hover > th {
  background-color: #e8e8e8;
}
.table > thead > tr > td.success,
.table > tbody > tr > td.success,
.table > tfoot > tr > td.success,
.table > thead > tr > th.success,
.table > tbody > tr > th.success,
.table > tfoot > tr > th.success,
.table > thead > tr.success > td,
.table > tbody > tr.success > td,
.table > tfoot > tr.success > td,
.table > thead > tr.success > th,
.table > tbody > tr.success > th,
.table > tfoot > tr.success > th {
  background-color: #dff0d8;
}
.table-hover > tbody > tr > td.success:hover,
.table-hover > tbody > tr > th.success:hover,
.table-hover > tbody > tr.success:hover > td,
.table-hover > tbody > tr:hover > .success,
.table-hover > tbody > tr.success:hover > th {
  background-color: #d0e9c6;
}
.table > thead > tr > td.info,
.table > tbody > tr > td.info,
.table > tfoot > tr > td.info,
.table > thead > tr > th.info,
.table > tbody > tr > th.info,
.table > tfoot > tr > th.info,
.table > thead > tr.info > td,
.table > tbody > tr.info > td,
.table > tfoot > tr.info > td,
.table > thead > tr.info > th,
.table > tbody > tr.info > th,
.table > tfoot > tr.info > th {
  background-color: #d9edf7;
}
.table-hover > tbody > tr > td.info:hover,
.table-hover > tbody > tr > th.info:hover,
.table-hover > tbody > tr.info:hover > td,
.table-hover > tbody > tr:hover > .info,
.table-hover > tbody > tr.info:hover > th {
  background-color: #c4e3f3;
}
.table > thead > tr > td.warning,
.table > tbody > tr > td.warning,
.table > tfoot > tr > td.warning,
.table > thead > tr > th.warning,
.table > tbody > tr > th.warning,
.table > tfoot > tr > th.warning,
.table > thead > tr.warning > td,
.table > tbody > tr.warning > td,
.table > tfoot > tr.warning > td,
.table > thead > tr.warning > th,
.table > tbody > tr.warning > th,
.table > tfoot > tr.warning > th {
  background-color: #fcf8e3;
}
.table-hover > tbody > tr > td.warning:hover,
.table-hover > tbody > tr > th.warning:hover,
.table-hover > tbody > tr.warning:hover > td,
.table-hover > tbody > tr:hover > .warning,
.table-hover > tbody > tr.warning:hover > th {
  background-color: #faf2cc;
}
.table > thead > tr > td.danger,
.table > tbody > tr > td.danger,
.table > tfoot > tr > td.danger,
.table > thead > tr > th.danger,
.table > tbody > tr > th.danger,
.table > tfoot > tr > th.danger,
.table > thead > tr.danger > td,
.table > tbody > tr.danger > td,
.table > tfoot > tr.danger > td,
.table > thead > tr.danger > th,
.table > tbody > tr.danger > th,
.table > tfoot > tr.danger > th {
  background-color: #f2dede;
}
.table-hover > tbody > tr > td.danger:hover,
.table-hover > tbody > tr > th.danger:hover,
.table-hover > tbody > tr.danger:hover > td,
.table-hover > tbody > tr:hover > .danger,
.table-hover > tbody > tr.danger:hover > th {
  background-color: #ebcccc;
}
.table-responsive {
  overflow-x: auto;
  min-height: 0.01%;
}
@media screen and (max-width: 767px) {
  .table-responsive {
    width: 100%;
    margin-bottom: 13.5px;
    overflow-y: hidden;
    -ms-overflow-style: -ms-autohiding-scrollbar;
    border: 1px solid #ddd;
  }
  .table-responsive > .table {
    margin-bottom: 0;
  }
  .table-responsive > .table > thead > tr > th,
  .table-responsive > .table > tbody > tr > th,
  .table-responsive > .table > tfoot > tr > th,
  .table-responsive > .table > thead > tr > td,
  .table-responsive > .table > tbody > tr > td,
  .table-responsive > .table > tfoot > tr > td {
    white-space: nowrap;
  }
  .table-responsive > .table-bordered {
    border: 0;
  }
  .table-responsive > .table-bordered > thead > tr > th:first-child,
  .table-responsive > .table-bordered > tbody > tr > th:first-child,
  .table-responsive > .table-bordered > tfoot > tr > th:first-child,
  .table-responsive > .table-bordered > thead > tr > td:first-child,
  .table-responsive > .table-bordered > tbody > tr > td:first-child,
  .table-responsive > .table-bordered > tfoot > tr > td:first-child {
    border-left: 0;
  }
  .table-responsive > .table-bordered > thead > tr > th:last-child,
  .table-responsive > .table-bordered > tbody > tr > th:last-child,
  .table-responsive > .table-bordered > tfoot > tr > th:last-child,
  .table-responsive > .table-bordered > thead > tr > td:last-child,
  .table-responsive > .table-bordered > tbody > tr > td:last-child,
  .table-responsive > .table-bordered > tfoot > tr > td:last-child {
    border-right: 0;
  }
  .table-responsive > .table-bordered > tbody > tr:last-child > th,
  .table-responsive > .table-bordered > tfoot > tr:last-child > th,
  .table-responsive > .table-bordered > tbody > tr:last-child > td,
  .table-responsive > .table-bordered > tfoot > tr:last-child > td {
    border-bottom: 0;
  }
}
fieldset {
  padding: 0;
  margin: 0;
  border: 0;
  min-width: 0;
}
legend {
  display: block;
  width: 100%;
  padding: 0;
  margin-bottom: 18px;
  font-size: 19.5px;
  line-height: inherit;
  color: #333333;
  border: 0;
  border-bottom: 1px solid #e5e5e5;
}
label {
  display: inline-block;
  max-width: 100%;
  margin-bottom: 5px;
  font-weight: bold;
}
input[type="search"] {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}
input[type="radio"],
input[type="checkbox"] {
  margin: 4px 0 0;
  margin-top: 1px \9;
  line-height: normal;
}
input[type="file"] {
  display: block;
}
input[type="range"] {
  display: block;
  width: 100%;
}
select[multiple],
select[size] {
  height: auto;
}
input[type="file"]:focus,
input[type="radio"]:focus,
input[type="checkbox"]:focus {
  outline: thin dotted;
  outline: 5px auto -webkit-focus-ring-color;
  outline-offset: -2px;
}
output {
  display: block;
  padding-top: 7px;
  font-size: 13px;
  line-height: 1.42857143;
  color: #555555;
}
.form-control {
  display: block;
  width: 100%;
  height: 32px;
  padding: 6px 12px;
  font-size: 13px;
  line-height: 1.42857143;
  color: #555555;
  background-color: #fff;
  background-image: none;
  border: 1px solid #ccc;
  border-radius: 2px;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
  -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
  transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
}
.form-control:focus {
  border-color: #66afe9;
  outline: 0;
  -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
  box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
}
.form-control::-moz-placeholder {
  color: #999;
  opacity: 1;
}
.form-control:-ms-input-placeholder {
  color: #999;
}
.form-control::-webkit-input-placeholder {
  color: #999;
}
.form-control::-ms-expand {
  border: 0;
  background-color: transparent;
}
.form-control[disabled],
.form-control[readonly],
fieldset[disabled] .form-control {
  background-color: #eeeeee;
  opacity: 1;
}
.form-control[disabled],
fieldset[disabled] .form-control {
  cursor: not-allowed;
}
textarea.form-control {
  height: auto;
}
input[type="search"] {
  -webkit-appearance: none;
}
@media screen and (-webkit-min-device-pixel-ratio: 0) {
  input[type="date"].form-control,
  input[type="time"].form-control,
  input[type="datetime-local"].form-control,
  input[type="month"].form-control {
    line-height: 32px;
  }
  input[type="date"].input-sm,
  input[type="time"].input-sm,
  input[type="datetime-local"].input-sm,
  input[type="month"].input-sm,
  .input-group-sm input[type="date"],
  .input-group-sm input[type="time"],
  .input-group-sm input[type="datetime-local"],
  .input-group-sm input[type="month"] {
    line-height: 30px;
  }
  input[type="date"].input-lg,
  input[type="time"].input-lg,
  input[type="datetime-local"].input-lg,
  input[type="month"].input-lg,
  .input-group-lg input[type="date"],
  .input-group-lg input[type="time"],
  .input-group-lg input[type="datetime-local"],
  .input-group-lg input[type="month"] {
    line-height: 45px;
  }
}
.form-group {
  margin-bottom: 15px;
}
.radio,
.checkbox {
  position: relative;
  display: block;
  margin-top: 10px;
  margin-bottom: 10px;
}
.radio label,
.checkbox label {
  min-height: 18px;
  padding-left: 20px;
  margin-bottom: 0;
  font-weight: normal;
  cursor: pointer;
}
.radio input[type="radio"],
.radio-inline input[type="radio"],
.checkbox input[type="checkbox"],
.checkbox-inline input[type="checkbox"] {
  position: absolute;
  margin-left: -20px;
  margin-top: 4px \9;
}
.radio + .radio,
.checkbox + .checkbox {
  margin-top: -5px;
}
.radio-inline,
.checkbox-inline {
  position: relative;
  display: inline-block;
  padding-left: 20px;
  margin-bottom: 0;
  vertical-align: middle;
  font-weight: normal;
  cursor: pointer;
}
.radio-inline + .radio-inline,
.checkbox-inline + .checkbox-inline {
  margin-top: 0;
  margin-left: 10px;
}
input[type="radio"][disabled],
input[type="checkbox"][disabled],
input[type="radio"].disabled,
input[type="checkbox"].disabled,
fieldset[disabled] input[type="radio"],
fieldset[disabled] input[type="checkbox"] {
  cursor: not-allowed;
}
.radio-inline.disabled,
.checkbox-inline.disabled,
fieldset[disabled] .radio-inline,
fieldset[disabled] .checkbox-inline {
  cursor: not-allowed;
}
.radio.disabled label,
.checkbox.disabled label,
fieldset[disabled] .radio label,
fieldset[disabled] .checkbox label {
  cursor: not-allowed;
}
.form-control-static {
  padding-top: 7px;
  padding-bottom: 7px;
  margin-bottom: 0;
  min-height: 31px;
}
.form-control-static.input-lg,
.form-control-static.input-sm {
  padding-left: 0;
  padding-right: 0;
}
.input-sm {
  height: 30px;
  padding: 5px 10px;
  font-size: 12px;
  line-height: 1.5;
  border-radius: 1px;
}
select.input-sm {
  height: 30px;
  line-height: 30px;
}
textarea.input-sm,
select[multiple].input-sm {
  height: auto;
}
.form-group-sm .form-control {
  height: 30px;
  padding: 5px 10px;
  font-size: 12px;
  line-height: 1.5;
  border-radius: 1px;
}
.form-group-sm select.form-control {
  height: 30px;
  line-height: 30px;
}
.form-group-sm textarea.form-control,
.form-group-sm select[multiple].form-control {
  height: auto;
}
.form-group-sm .form-control-static {
  height: 30px;
  min-height: 30px;
  padding: 6px 10px;
  font-size: 12px;
  line-height: 1.5;
}
.input-lg {
  height: 45px;
  padding: 10px 16px;
  font-size: 17px;
  line-height: 1.3333333;
  border-radius: 3px;
}
select.input-lg {
  height: 45px;
  line-height: 45px;
}
textarea.input-lg,
select[multiple].input-lg {
  height: auto;
}
.form-group-lg .form-control {
  height: 45px;
  padding: 10px 16px;
  font-size: 17px;
  line-height: 1.3333333;
  border-radius: 3px;
}
.form-group-lg select.form-control {
  height: 45px;
  line-height: 45px;
}
.form-group-lg textarea.form-control,
.form-group-lg select[multiple].form-control {
  height: auto;
}
.form-group-lg .form-control-static {
  height: 45px;
  min-height: 35px;
  padding: 11px 16px;
  font-size: 17px;
  line-height: 1.3333333;
}
.has-feedback {
  position: relative;
}
.has-feedback .form-control {
  padding-right: 40px;
}
.form-control-feedback {
  position: absolute;
  top: 0;
  right: 0;
  z-index: 2;
  display: block;
  width: 32px;
  height: 32px;
  line-height: 32px;
  text-align: center;
  pointer-events: none;
}
.input-lg + .form-control-feedback,
.input-group-lg + .form-control-feedback,
.form-group-lg .form-control + .form-control-feedback {
  width: 45px;
  height: 45px;
  line-height: 45px;
}
.input-sm + .form-control-feedback,
.input-group-sm + .form-control-feedback,
.form-group-sm .form-control + .form-control-feedback {
  width: 30px;
  height: 30px;
  line-height: 30px;
}
.has-success .help-block,
.has-success .control-label,
.has-success .radio,
.has-success .checkbox,
.has-success .radio-inline,
.has-success .checkbox-inline,
.has-success.radio label,
.has-success.checkbox label,
.has-success.radio-inline label,
.has-success.checkbox-inline label {
  color: #3c763d;
}
.has-success .form-control {
  border-color: #3c763d;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
}
.has-success .form-control:focus {
  border-color: #2b542c;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
}
.has-success .input-group-addon {
  color: #3c763d;
  border-color: #3c763d;
  background-color: #dff0d8;
}
.has-success .form-control-feedback {
  color: #3c763d;
}
.has-warning .help-block,
.has-warning .control-label,
.has-warning .radio,
.has-warning .checkbox,
.has-warning .radio-inline,
.has-warning .checkbox-inline,
.has-warning.radio label,
.has-warning.checkbox label,
.has-warning.radio-inline label,
.has-warning.checkbox-inline label {
  color: #8a6d3b;
}
.has-warning .form-control {
  border-color: #8a6d3b;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
}
.has-warning .form-control:focus {
  border-color: #66512c;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;
}
.has-warning .input-group-addon {
  color: #8a6d3b;
  border-color: #8a6d3b;
  background-color: #fcf8e3;
}
.has-warning .form-control-feedback {
  color: #8a6d3b;
}
.has-error .help-block,
.has-error .control-label,
.has-error .radio,
.has-error .checkbox,
.has-error .radio-inline,
.has-error .checkbox-inline,
.has-error.radio label,
.has-error.checkbox label,
.has-error.radio-inline label,
.has-error.checkbox-inline label {
  color: #a94442;
}
.has-error .form-control {
  border-color: #a94442;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
}
.has-error .form-control:focus {
  border-color: #843534;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
}
.has-error .input-group-addon {
  color: #a94442;
  border-color: #a94442;
  background-color: #f2dede;
}
.has-error .form-control-feedback {
  color: #a94442;
}
.has-feedback label ~ .form-control-feedback {
  top: 23px;
}
.has-feedback label.sr-only ~ .form-control-feedback {
  top: 0;
}
.help-block {
  display: block;
  margin-top: 5px;
  margin-bottom: 10px;
  color: #404040;
}
@media (min-width: 768px) {
  .form-inline .form-group {
    display: inline-block;
    margin-bottom: 0;
    vertical-align: middle;
  }
  .form-inline .form-control {
    display: inline-block;
    width: auto;
    vertical-align: middle;
  }
  .form-inline .form-control-static {
    display: inline-block;
  }
  .form-inline .input-group {
    display: inline-table;
    vertical-align: middle;
  }
  .form-inline .input-group .input-group-addon,
  .form-inline .input-group .input-group-btn,
  .form-inline .input-group .form-control {
    width: auto;
  }
  .form-inline .input-group > .form-control {
    width: 100%;
  }
  .form-inline .control-label {
    margin-bottom: 0;
    vertical-align: middle;
  }
  .form-inline .radio,
  .form-inline .checkbox {
    display: inline-block;
    margin-top: 0;
    margin-bottom: 0;
    vertical-align: middle;
  }
  .form-inline .radio label,
  .form-inline .checkbox label {
    padding-left: 0;
  }
  .form-inline .radio input[type="radio"],
  .form-inline .checkbox input[type="checkbox"] {
    position: relative;
    margin-left: 0;
  }
  .form-inline .has-feedback .form-control-feedback {
    top: 0;
  }
}
.form-horizontal .radio,
.form-horizontal .checkbox,
.form-horizontal .radio-inline,
.form-horizontal .checkbox-inline {
  margin-top: 0;
  margin-bottom: 0;
  padding-top: 7px;
}
.form-horizontal .radio,
.form-horizontal .checkbox {
  min-height: 25px;
}
.form-horizontal .form-group {
  margin-left: 0px;
  margin-right: 0px;
}
@media (min-width: 768px) {
  .form-horizontal .control-label {
    text-align: right;
    margin-bottom: 0;
    padding-top: 7px;
  }
}
.form-horizontal .has-feedback .form-control-feedback {
  right: 0px;
}
@media (min-width: 768px) {
  .form-horizontal .form-group-lg .control-label {
    padding-top: 11px;
    font-size: 17px;
  }
}
@media (min-width: 768px) {
  .form-horizontal .form-group-sm .control-label {
    padding-top: 6px;
    font-size: 12px;
  }
}
.btn {
  display: inline-block;
  margin-bottom: 0;
  font-weight: normal;
  text-align: center;
  vertical-align: middle;
  touch-action: manipulation;
  cursor: pointer;
  background-image: none;
  border: 1px solid transparent;
  white-space: nowrap;
  padding: 6px 12px;
  font-size: 13px;
  line-height: 1.42857143;
  border-radius: 2px;
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
}
.btn:focus,
.btn:active:focus,
.btn.active:focus,
.btn.focus,
.btn:active.focus,
.btn.active.focus {
  outline: thin dotted;
  outline: 5px auto -webkit-focus-ring-color;
  outline-offset: -2px;
}
.btn:hover,
.btn:focus,
.btn.focus {
  color: #333;
  text-decoration: none;
}
.btn:active,
.btn.active {
  outline: 0;
  background-image: none;
  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
  box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
}
.btn.disabled,
.btn[disabled],
fieldset[disabled] .btn {
  cursor: not-allowed;
  opacity: 0.65;
  filter: alpha(opacity=65);
  -webkit-box-shadow: none;
  box-shadow: none;
}
a.btn.disabled,
fieldset[disabled] a.btn {
  pointer-events: none;
}
.btn-default {
  color: #333;
  background-color: #fff;
  border-color: #ccc;
}
.btn-default:focus,
.btn-default.focus {
  color: #333;
  background-color: #e6e6e6;
  border-color: #8c8c8c;
}
.btn-default:hover {
  color: #333;
  background-color: #e6e6e6;
  border-color: #adadad;
}
.btn-default:active,
.btn-default.active,
.open > .dropdown-toggle.btn-default {
  color: #333;
  background-color: #e6e6e6;
  border-color: #adadad;
}
.btn-default:active:hover,
.btn-default.active:hover,
.open > .dropdown-toggle.btn-default:hover,
.btn-default:active:focus,
.btn-default.active:focus,
.open > .dropdown-toggle.btn-default:focus,
.btn-default:active.focus,
.btn-default.active.focus,
.open > .dropdown-toggle.btn-default.focus {
  color: #333;
  background-color: #d4d4d4;
  border-color: #8c8c8c;
}
.btn-default:active,
.btn-default.active,
.open > .dropdown-toggle.btn-default {
  background-image: none;
}
.btn-default.disabled:hover,
.btn-default[disabled]:hover,
fieldset[disabled] .btn-default:hover,
.btn-default.disabled:focus,
.btn-default[disabled]:focus,
fieldset[disabled] .btn-default:focus,
.btn-default.disabled.focus,
.btn-default[disabled].focus,
fieldset[disabled] .btn-default.focus {
  background-color: #fff;
  border-color: #ccc;
}
.btn-default .badge {
  color: #fff;
  background-color: #333;
}
.btn-primary {
  color: #fff;
  background-color: #337ab7;
  border-color: #2e6da4;
}
.btn-primary:focus,
.btn-primary.focus {
  color: #fff;
  background-color: #286090;
  border-color: #122b40;
}
.btn-primary:hover {
  color: #fff;
  background-color: #286090;
  border-color: #204d74;
}
.btn-primary:active,
.btn-primary.active,
.open > .dropdown-toggle.btn-primary {
  color: #fff;
  background-color: #286090;
  border-color: #204d74;
}
.btn-primary:active:hover,
.btn-primary.active:hover,
.open > .dropdown-toggle.btn-primary:hover,
.btn-primary:active:focus,
.btn-primary.active:focus,
.open > .dropdown-toggle.btn-primary:focus,
.btn-primary:active.focus,
.btn-primary.active.focus,
.open > .dropdown-toggle.btn-primary.focus {
  color: #fff;
  background-color: #204d74;
  border-color: #122b40;
}
.btn-primary:active,
.btn-primary.active,
.open > .dropdown-toggle.btn-primary {
  background-image: none;
}
.btn-primary.disabled:hover,
.btn-primary[disabled]:hover,
fieldset[disabled] .btn-primary:hover,
.btn-primary.disabled:focus,
.btn-primary[disabled]:focus,
fieldset[disabled] .btn-primary:focus,
.btn-primary.disabled.focus,
.btn-primary[disabled].focus,
fieldset[disabled] .btn-primary.focus {
  background-color: #337ab7;
  border-color: #2e6da4;
}
.btn-primary .badge {
  color: #337ab7;
  background-color: #fff;
}
.btn-success {
  color: #fff;
  background-color: #5cb85c;
  border-color: #4cae4c;
}
.btn-success:focus,
.btn-success.focus {
  color: #fff;
  background-color: #449d44;
  border-color: #255625;
}
.btn-success:hover {
  color: #fff;
  background-color: #449d44;
  border-color: #398439;
}
.btn-success:active,
.btn-success.active,
.open > .dropdown-toggle.btn-success {
  color: #fff;
  background-color: #449d44;
  border-color: #398439;
}
.btn-success:active:hover,
.btn-success.active:hover,
.open > .dropdown-toggle.btn-success:hover,
.btn-success:active:focus,
.btn-success.active:focus,
.open > .dropdown-toggle.btn-success:focus,
.btn-success:active.focus,
.btn-success.active.focus,
.open > .dropdown-toggle.btn-success.focus {
  color: #fff;
  background-color: #398439;
  border-color: #255625;
}
.btn-success:active,
.btn-success.active,
.open > .dropdown-toggle.btn-success {
  background-image: none;
}
.btn-success.disabled:hover,
.btn-success[disabled]:hover,
fieldset[disabled] .btn-success:hover,
.btn-success.disabled:focus,
.btn-success[disabled]:focus,
fieldset[disabled] .btn-success:focus,
.btn-success.disabled.focus,
.btn-success[disabled].focus,
fieldset[disabled] .btn-success.focus {
  background-color: #5cb85c;
  border-color: #4cae4c;
}
.btn-success .badge {
  color: #5cb85c;
  background-color: #fff;
}
.btn-info {
  color: #fff;
  background-color: #5bc0de;
  border-color: #46b8da;
}
.btn-info:focus,
.btn-info.focus {
  color: #fff;
  background-color: #31b0d5;
  border-color: #1b6d85;
}
.btn-info:hover {
  color: #fff;
  background-color: #31b0d5;
  border-color: #269abc;
}
.btn-info:active,
.btn-info.active,
.open > .dropdown-toggle.btn-info {
  color: #fff;
  background-color: #31b0d5;
  border-color: #269abc;
}
.btn-info:active:hover,
.btn-info.active:hover,
.open > .dropdown-toggle.btn-info:hover,
.btn-info:active:focus,
.btn-info.active:focus,
.open > .dropdown-toggle.btn-info:focus,
.btn-info:active.focus,
.btn-info.active.focus,
.open > .dropdown-toggle.btn-info.focus {
  color: #fff;
  background-color: #269abc;
  border-color: #1b6d85;
}
.btn-info:active,
.btn-info.active,
.open > .dropdown-toggle.btn-info {
  background-image: none;
}
.btn-info.disabled:hover,
.btn-info[disabled]:hover,
fieldset[disabled] .btn-info:hover,
.btn-info.disabled:focus,
.btn-info[disabled]:focus,
fieldset[disabled] .btn-info:focus,
.btn-info.disabled.focus,
.btn-info[disabled].focus,
fieldset[disabled] .btn-info.focus {
  background-color: #5bc0de;
  border-color: #46b8da;
}
.btn-info .badge {
  color: #5bc0de;
  background-color: #fff;
}
.btn-warning {
  color: #fff;
  background-color: #f0ad4e;
  border-color: #eea236;
}
.btn-warning:focus,
.btn-warning.focus {
  color: #fff;
  background-color: #ec971f;
  border-color: #985f0d;
}
.btn-warning:hover {
  color: #fff;
  background-color: #ec971f;
  border-color: #d58512;
}
.btn-warning:active,
.btn-warning.active,
.open > .dropdown-toggle.btn-warning {
  color: #fff;
  background-color: #ec971f;
  border-color: #d58512;
}
.btn-warning:active:hover,
.btn-warning.active:hover,
.open > .dropdown-toggle.btn-warning:hover,
.btn-warning:active:focus,
.btn-warning.active:focus,
.open > .dropdown-toggle.btn-warning:focus,
.btn-warning:active.focus,
.btn-warning.active.focus,
.open > .dropdown-toggle.btn-warning.focus {
  color: #fff;
  background-color: #d58512;
  border-color: #985f0d;
}
.btn-warning:active,
.btn-warning.active,
.open > .dropdown-toggle.btn-warning {
  background-image: none;
}
.btn-warning.disabled:hover,
.btn-warning[disabled]:hover,
fieldset[disabled] .btn-warning:hover,
.btn-warning.disabled:focus,
.btn-warning[disabled]:focus,
fieldset[disabled] .btn-warning:focus,
.btn-warning.disabled.focus,
.btn-warning[disabled].focus,
fieldset[disabled] .btn-warning.focus {
  background-color: #f0ad4e;
  border-color: #eea236;
}
.btn-warning .badge {
  color: #f0ad4e;
  background-color: #fff;
}
.btn-danger {
  color: #fff;
  background-color: #d9534f;
  border-color: #d43f3a;
}
.btn-danger:focus,
.btn-danger.focus {
  color: #fff;
  background-color: #c9302c;
  border-color: #761c19;
}
.btn-danger:hover {
  color: #fff;
  background-color: #c9302c;
  border-color: #ac2925;
}
.btn-danger:active,
.btn-danger.active,
.open > .dropdown-toggle.btn-danger {
  color: #fff;
  background-color: #c9302c;
  border-color: #ac2925;
}
.btn-danger:active:hover,
.btn-danger.active:hover,
.open > .dropdown-toggle.btn-danger:hover,
.btn-danger:active:focus,
.btn-danger.active:focus,
.open > .dropdown-toggle.btn-danger:focus,
.btn-danger:active.focus,
.btn-danger.active.focus,
.open > .dropdown-toggle.btn-danger.focus {
  color: #fff;
  background-color: #ac2925;
  border-color: #761c19;
}
.btn-danger:active,
.btn-danger.active,
.open > .dropdown-toggle.btn-danger {
  background-image: none;
}
.btn-danger.disabled:hover,
.btn-danger[disabled]:hover,
fieldset[disabled] .btn-danger:hover,
.btn-danger.disabled:focus,
.btn-danger[disabled]:focus,
fieldset[disabled] .btn-danger:focus,
.btn-danger.disabled.focus,
.btn-danger[disabled].focus,
fieldset[disabled] .btn-danger.focus {
  background-color: #d9534f;
  border-color: #d43f3a;
}
.btn-danger .badge {
  color: #d9534f;
  background-color: #fff;
}
.btn-link {
  color: #337ab7;
  font-weight: normal;
  border-radius: 0;
}
.btn-link,
.btn-link:active,
.btn-link.active,
.btn-link[disabled],
fieldset[disabled] .btn-link {
  background-color: transparent;
  -webkit-box-shadow: none;
  box-shadow: none;
}
.btn-link,
.btn-link:hover,
.btn-link:focus,
.btn-link:active {
  border-color: transparent;
}
.btn-link:hover,
.btn-link:focus {
  color: #23527c;
  text-decoration: underline;
  background-color: transparent;
}
.btn-link[disabled]:hover,
fieldset[disabled] .btn-link:hover,
.btn-link[disabled]:focus,
fieldset[disabled] .btn-link:focus {
  color: #777777;
  text-decoration: none;
}
.btn-lg,
.btn-group-lg > .btn {
  padding: 10px 16px;
  font-size: 17px;
  line-height: 1.3333333;
  border-radius: 3px;
}
.btn-sm,
.btn-group-sm > .btn {
  padding: 5px 10px;
  font-size: 12px;
  line-height: 1.5;
  border-radius: 1px;
}
.btn-xs,
.btn-group-xs > .btn {
  padding: 1px 5px;
  font-size: 12px;
  line-height: 1.5;
  border-radius: 1px;
}
.btn-block {
  display: block;
  width: 100%;
}
.btn-block + .btn-block {
  margin-top: 5px;
}
input[type="submit"].btn-block,
input[type="reset"].btn-block,
input[type="button"].btn-block {
  width: 100%;
}
.fade {
  opacity: 0;
  -webkit-transition: opacity 0.15s linear;
  -o-transition: opacity 0.15s linear;
  transition: opacity 0.15s linear;
}
.fade.in {
  opacity: 1;
}
.collapse {
  display: none;
}
.collapse.in {
  display: block;
}
tr.collapse.in {
  display: table-row;
}
tbody.collapse.in {
  display: table-row-group;
}
.collapsing {
  position: relative;
  height: 0;
  overflow: hidden;
  -webkit-transition-property: height, visibility;
  transition-property: height, visibility;
  -webkit-transition-duration: 0.35s;
  transition-duration: 0.35s;
  -webkit-transition-timing-function: ease;
  transition-timing-function: ease;
}
.caret {
  display: inline-block;
  width: 0;
  height: 0;
  margin-left: 2px;
  vertical-align: middle;
  border-top: 4px dashed;
  border-top: 4px solid \9;
  border-right: 4px solid transparent;
  border-left: 4px solid transparent;
}
.dropup,
.dropdown {
  position: relative;
}
.dropdown-toggle:focus {
  outline: 0;
}
.dropdown-menu {
  position: absolute;
  top: 100%;
  left: 0;
  z-index: 1000;
  display: none;
  float: left;
  min-width: 160px;
  padding: 5px 0;
  margin: 2px 0 0;
  list-style: none;
  font-size: 13px;
  text-align: left;
  background-color: #fff;
  border: 1px solid #ccc;
  border: 1px solid rgba(0, 0, 0, 0.15);
  border-radius: 2px;
  -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
  box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
  background-clip: padding-box;
}
.dropdown-menu.pull-right {
  right: 0;
  left: auto;
}
.dropdown-menu .divider {
  height: 1px;
  margin: 8px 0;
  overflow: hidden;
  background-color: #e5e5e5;
}
.dropdown-menu > li > a {
  display: block;
  padding: 3px 20px;
  clear: both;
  font-weight: normal;
  line-height: 1.42857143;
  color: #333333;
  white-space: nowrap;
}
.dropdown-menu > li > a:hover,
.dropdown-menu > li > a:focus {
  text-decoration: none;
  color: #262626;
  background-color: #f5f5f5;
}
.dropdown-menu > .active > a,
.dropdown-menu > .active > a:hover,
.dropdown-menu > .active > a:focus {
  color: #fff;
  text-decoration: none;
  outline: 0;
  background-color: #337ab7;
}
.dropdown-menu > .disabled > a,
.dropdown-menu > .disabled > a:hover,
.dropdown-menu > .disabled > a:focus {
  color: #777777;
}
.dropdown-menu > .disabled > a:hover,
.dropdown-menu > .disabled > a:focus {
  text-decoration: none;
  background-color: transparent;
  background-image: none;
  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
  cursor: not-allowed;
}
.open > .dropdown-menu {
  display: block;
}
.open > a {
  outline: 0;
}
.dropdown-menu-right {
  left: auto;
  right: 0;
}
.dropdown-menu-left {
  left: 0;
  right: auto;
}
.dropdown-header {
  display: block;
  padding: 3px 20px;
  font-size: 12px;
  line-height: 1.42857143;
  color: #777777;
  white-space: nowrap;
}
.dropdown-backdrop {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  top: 0;
  z-index: 990;
}
.pull-right > .dropdown-menu {
  right: 0;
  left: auto;
}
.dropup .caret,
.navbar-fixed-bottom .dropdown .caret {
  border-top: 0;
  border-bottom: 4px dashed;
  border-bottom: 4px solid \9;
  content: "";
}
.dropup .dropdown-menu,
.navbar-fixed-bottom .dropdown .dropdown-menu {
  top: auto;
  bottom: 100%;
  margin-bottom: 2px;
}
@media (min-width: 541px) {
  .navbar-right .dropdown-menu {
    left: auto;
    right: 0;
  }
  .navbar-right .dropdown-menu-left {
    left: 0;
    right: auto;
  }
}
.btn-group,
.btn-group-vertical {
  position: relative;
  display: inline-block;
  vertical-align: middle;
}
.btn-group > .btn,
.btn-group-vertical > .btn {
  position: relative;
  float: left;
}
.btn-group > .btn:hover,
.btn-group-vertical > .btn:hover,
.btn-group > .btn:focus,
.btn-group-vertical > .btn:focus,
.btn-group > .btn:active,
.btn-group-vertical > .btn:active,
.btn-group > .btn.active,
.btn-group-vertical > .btn.active {
  z-index: 2;
}
.btn-group .btn + .btn,
.btn-group .btn + .btn-group,
.btn-group .btn-group + .btn,
.btn-group .btn-group + .btn-group {
  margin-left: -1px;
}
.btn-toolbar {
  margin-left: -5px;
}
.btn-toolbar .btn,
.btn-toolbar .btn-group,
.btn-toolbar .input-group {
  float: left;
}
.btn-toolbar > .btn,
.btn-toolbar > .btn-group,
.btn-toolbar > .input-group {
  margin-left: 5px;
}
.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
  border-radius: 0;
}
.btn-group > .btn:first-child {
  margin-left: 0;
}
.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {
  border-bottom-right-radius: 0;
  border-top-right-radius: 0;
}
.btn-group > .btn:last-child:not(:first-child),
.btn-group > .dropdown-toggle:not(:first-child) {
  border-bottom-left-radius: 0;
  border-top-left-radius: 0;
}
.btn-group > .btn-group {
  float: left;
}
.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
  border-radius: 0;
}
.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,
.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
  border-bottom-right-radius: 0;
  border-top-right-radius: 0;
}
.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {
  border-bottom-left-radius: 0;
  border-top-left-radius: 0;
}
.btn-group .dropdown-toggle:active,
.btn-group.open .dropdown-toggle {
  outline: 0;
}
.btn-group > .btn + .dropdown-toggle {
  padding-left: 8px;
  padding-right: 8px;
}
.btn-group > .btn-lg + .dropdown-toggle {
  padding-left: 12px;
  padding-right: 12px;
}
.btn-group.open .dropdown-toggle {
  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
  box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
}
.btn-group.open .dropdown-toggle.btn-link {
  -webkit-box-shadow: none;
  box-shadow: none;
}
.btn .caret {
  margin-left: 0;
}
.btn-lg .caret {
  border-width: 5px 5px 0;
  border-bottom-width: 0;
}
.dropup .btn-lg .caret {
  border-width: 0 5px 5px;
}
.btn-group-vertical > .btn,
.btn-group-vertical > .btn-group,
.btn-group-vertical > .btn-group > .btn {
  display: block;
  float: none;
  width: 100%;
  max-width: 100%;
}
.btn-group-vertical > .btn-group > .btn {
  float: none;
}
.btn-group-vertical > .btn + .btn,
.btn-group-vertical > .btn + .btn-group,
.btn-group-vertical > .btn-group + .btn,
.btn-group-vertical > .btn-group + .btn-group {
  margin-top: -1px;
  margin-left: 0;
}
.btn-group-vertical > .btn:not(:first-child):not(:last-child) {
  border-radius: 0;
}
.btn-group-vertical > .btn:first-child:not(:last-child) {
  border-top-right-radius: 2px;
  border-top-left-radius: 2px;
  border-bottom-right-radius: 0;
  border-bottom-left-radius: 0;
}
.btn-group-vertical > .btn:last-child:not(:first-child) {
  border-top-right-radius: 0;
  border-top-left-radius: 0;
  border-bottom-right-radius: 2px;
  border-bottom-left-radius: 2px;
}
.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {
  border-radius: 0;
}
.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,
.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
  border-bottom-right-radius: 0;
  border-bottom-left-radius: 0;
}
.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {
  border-top-right-radius: 0;
  border-top-left-radius: 0;
}
.btn-group-justified {
  display: table;
  width: 100%;
  table-layout: fixed;
  border-collapse: separate;
}
.btn-group-justified > .btn,
.btn-group-justified > .btn-group {
  float: none;
  display: table-cell;
  width: 1%;
}
.btn-group-justified > .btn-group .btn {
  width: 100%;
}
.btn-group-justified > .btn-group .dropdown-menu {
  left: auto;
}
[data-toggle="buttons"] > .btn input[type="radio"],
[data-toggle="buttons"] > .btn-group > .btn input[type="radio"],
[data-toggle="buttons"] > .btn input[type="checkbox"],
[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] {
  position: absolute;
  clip: rect(0, 0, 0, 0);
  pointer-events: none;
}
.input-group {
  position: relative;
  display: table;
  border-collapse: separate;
}
.input-group[class*="col-"] {
  float: none;
  padding-left: 0;
  padding-right: 0;
}
.input-group .form-control {
  position: relative;
  z-index: 2;
  float: left;
  width: 100%;
  margin-bottom: 0;
}
.input-group .form-control:focus {
  z-index: 3;
}
.input-group-lg > .form-control,
.input-group-lg > .input-group-addon,
.input-group-lg > .input-group-btn > .btn {
  height: 45px;
  padding: 10px 16px;
  font-size: 17px;
  line-height: 1.3333333;
  border-radius: 3px;
}
select.input-group-lg > .form-control,
select.input-group-lg > .input-group-addon,
select.input-group-lg > .input-group-btn > .btn {
  height: 45px;
  line-height: 45px;
}
textarea.input-group-lg > .form-control,
textarea.input-group-lg > .input-group-addon,
textarea.input-group-lg > .input-group-btn > .btn,
select[multiple].input-group-lg > .form-control,
select[multiple].input-group-lg > .input-group-addon,
select[multiple].input-group-lg > .input-group-btn > .btn {
  height: auto;
}
.input-group-sm > .form-control,
.input-group-sm > .input-group-addon,
.input-group-sm > .input-group-btn > .btn {
  height: 30px;
  padding: 5px 10px;
  font-size: 12px;
  line-height: 1.5;
  border-radius: 1px;
}
select.input-group-sm > .form-control,
select.input-group-sm > .input-group-addon,
select.input-group-sm > .input-group-btn > .btn {
  height: 30px;
  line-height: 30px;
}
textarea.input-group-sm > .form-control,
textarea.input-group-sm > .input-group-addon,
textarea.input-group-sm > .input-group-btn > .btn,
select[multiple].input-group-sm > .form-control,
select[multiple].input-group-sm > .input-group-addon,
select[multiple].input-group-sm > .input-group-btn > .btn {
  height: auto;
}
.input-group-addon,
.input-group-btn,
.input-group .form-control {
  display: table-cell;
}
.input-group-addon:not(:first-child):not(:last-child),
.input-group-btn:not(:first-child):not(:last-child),
.input-group .form-control:not(:first-child):not(:last-child) {
  border-radius: 0;
}
.input-group-addon,
.input-group-btn {
  width: 1%;
  white-space: nowrap;
  vertical-align: middle;
}
.input-group-addon {
  padding: 6px 12px;
  font-size: 13px;
  font-weight: normal;
  line-height: 1;
  color: #555555;
  text-align: center;
  background-color: #eeeeee;
  border: 1px solid #ccc;
  border-radius: 2px;
}
.input-group-addon.input-sm {
  padding: 5px 10px;
  font-size: 12px;
  border-radius: 1px;
}
.input-group-addon.input-lg {
  padding: 10px 16px;
  font-size: 17px;
  border-radius: 3px;
}
.input-group-addon input[type="radio"],
.input-group-addon input[type="checkbox"] {
  margin-top: 0;
}
.input-group .form-control:first-child,
.input-group-addon:first-child,
.input-group-btn:first-child > .btn,
.input-group-btn:first-child > .btn-group > .btn,
.input-group-btn:first-child > .dropdown-toggle,
.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),
.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {
  border-bottom-right-radius: 0;
  border-top-right-radius: 0;
}
.input-group-addon:first-child {
  border-right: 0;
}
.input-group .form-control:last-child,
.input-group-addon:last-child,
.input-group-btn:last-child > .btn,
.input-group-btn:last-child > .btn-group > .btn,
.input-group-btn:last-child > .dropdown-toggle,
.input-group-btn:first-child > .btn:not(:first-child),
.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {
  border-bottom-left-radius: 0;
  border-top-left-radius: 0;
}
.input-group-addon:last-child {
  border-left: 0;
}
.input-group-btn {
  position: relative;
  font-size: 0;
  white-space: nowrap;
}
.input-group-btn > .btn {
  position: relative;
}
.input-group-btn > .btn + .btn {
  margin-left: -1px;
}
.input-group-btn > .btn:hover,
.input-group-btn > .btn:focus,
.input-group-btn > .btn:active {
  z-index: 2;
}
.input-group-btn:first-child > .btn,
.input-group-btn:first-child > .btn-group {
  margin-right: -1px;
}
.input-group-btn:last-child > .btn,
.input-group-btn:last-child > .btn-group {
  z-index: 2;
  margin-left: -1px;
}
.nav {
  margin-bottom: 0;
  padding-left: 0;
  list-style: none;
}
.nav > li {
  position: relative;
  display: block;
}
.nav > li > a {
  position: relative;
  display: block;
  padding: 10px 15px;
}
.nav > li > a:hover,
.nav > li > a:focus {
  text-decoration: none;
  background-color: #eeeeee;
}
.nav > li.disabled > a {
  color: #777777;
}
.nav > li.disabled > a:hover,
.nav > li.disabled > a:focus {
  color: #777777;
  text-decoration: none;
  background-color: transparent;
  cursor: not-allowed;
}
.nav .open > a,
.nav .open > a:hover,
.nav .open > a:focus {
  background-color: #eeeeee;
  border-color: #337ab7;
}
.nav .nav-divider {
  height: 1px;
  margin: 8px 0;
  overflow: hidden;
  background-color: #e5e5e5;
}
.nav > li > a > img {
  max-width: none;
}
.nav-tabs {
  border-bottom: 1px solid #ddd;
}
.nav-tabs > li {
  float: left;
  margin-bottom: -1px;
}
.nav-tabs > li > a {
  margin-right: 2px;
  line-height: 1.42857143;
  border: 1px solid transparent;
  border-radius: 2px 2px 0 0;
}
.nav-tabs > li > a:hover {
  border-color: #eeeeee #eeeeee #ddd;
}
.nav-tabs > li.active > a,
.nav-tabs > li.active > a:hover,
.nav-tabs > li.active > a:focus {
  color: #555555;
  background-color: #fff;
  border: 1px solid #ddd;
  border-bottom-color: transparent;
  cursor: default;
}
.nav-tabs.nav-justified {
  width: 100%;
  border-bottom: 0;
}
.nav-tabs.nav-justified > li {
  float: none;
}
.nav-tabs.nav-justified > li > a {
  text-align: center;
  margin-bottom: 5px;
}
.nav-tabs.nav-justified > .dropdown .dropdown-menu {
  top: auto;
  left: auto;
}
@media (min-width: 768px) {
  .nav-tabs.nav-justified > li {
    display: table-cell;
    width: 1%;
  }
  .nav-tabs.nav-justified > li > a {
    margin-bottom: 0;
  }
}
.nav-tabs.nav-justified > li > a {
  margin-right: 0;
  border-radius: 2px;
}
.nav-tabs.nav-justified > .active > a,
.nav-tabs.nav-justified > .active > a:hover,
.nav-tabs.nav-justified > .active > a:focus {
  border: 1px solid #ddd;
}
@media (min-width: 768px) {
  .nav-tabs.nav-justified > li > a {
    border-bottom: 1px solid #ddd;
    border-radius: 2px 2px 0 0;
  }
  .nav-tabs.nav-justified > .active > a,
  .nav-tabs.nav-justified > .active > a:hover,
  .nav-tabs.nav-justified > .active > a:focus {
    border-bottom-color: #fff;
  }
}
.nav-pills > li {
  float: left;
}
.nav-pills > li > a {
  border-radius: 2px;
}
.nav-pills > li + li {
  margin-left: 2px;
}
.nav-pills > li.active > a,
.nav-pills > li.active > a:hover,
.nav-pills > li.active > a:focus {
  color: #fff;
  background-color: #337ab7;
}
.nav-stacked > li {
  float: none;
}
.nav-stacked > li + li {
  margin-top: 2px;
  margin-left: 0;
}
.nav-justified {
  width: 100%;
}
.nav-justified > li {
  float: none;
}
.nav-justified > li > a {
  text-align: center;
  margin-bottom: 5px;
}
.nav-justified > .dropdown .dropdown-menu {
  top: auto;
  left: auto;
}
@media (min-width: 768px) {
  .nav-justified > li {
    display: table-cell;
    width: 1%;
  }
  .nav-justified > li > a {
    margin-bottom: 0;
  }
}
.nav-tabs-justified {
  border-bottom: 0;
}
.nav-tabs-justified > li > a {
  margin-right: 0;
  border-radius: 2px;
}
.nav-tabs-justified > .active > a,
.nav-tabs-justified > .active > a:hover,
.nav-tabs-justified > .active > a:focus {
  border: 1px solid #ddd;
}
@media (min-width: 768px) {
  .nav-tabs-justified > li > a {
    border-bottom: 1px solid #ddd;
    border-radius: 2px 2px 0 0;
  }
  .nav-tabs-justified > .active > a,
  .nav-tabs-justified > .active > a:hover,
  .nav-tabs-justified > .active > a:focus {
    border-bottom-color: #fff;
  }
}
.tab-content > .tab-pane {
  display: none;
}
.tab-content > .active {
  display: block;
}
.nav-tabs .dropdown-menu {
  margin-top: -1px;
  border-top-right-radius: 0;
  border-top-left-radius: 0;
}
.navbar {
  position: relative;
  min-height: 30px;
  margin-bottom: 18px;
  border: 1px solid transparent;
}
@media (min-width: 541px) {
  .navbar {
    border-radius: 2px;
  }
}
@media (min-width: 541px) {
  .navbar-header {
    float: left;
  }
}
.navbar-collapse {
  overflow-x: visible;
  padding-right: 0px;
  padding-left: 0px;
  border-top: 1px solid transparent;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);
  -webkit-overflow-scrolling: touch;
}
.navbar-collapse.in {
  overflow-y: auto;
}
@media (min-width: 541px) {
  .navbar-collapse {
    width: auto;
    border-top: 0;
    box-shadow: none;
  }
  .navbar-collapse.collapse {
    display: block !important;
    height: auto !important;
    padding-bottom: 0;
    overflow: visible !important;
  }
  .navbar-collapse.in {
    overflow-y: visible;
  }
  .navbar-fixed-top .navbar-collapse,
  .navbar-static-top .navbar-collapse,
  .navbar-fixed-bottom .navbar-collapse {
    padding-left: 0;
    padding-right: 0;
  }
}
.navbar-fixed-top .navbar-collapse,
.navbar-fixed-bottom .navbar-collapse {
  max-height: 340px;
}
@media (max-device-width: 540px) and (orientation: landscape) {
  .navbar-fixed-top .navbar-collapse,
  .navbar-fixed-bottom .navbar-collapse {
    max-height: 200px;
  }
}
.container > .navbar-header,
.container-fluid > .navbar-header,
.container > .navbar-collapse,
.container-fluid > .navbar-collapse {
  margin-right: 0px;
  margin-left: 0px;
}
@media (min-width: 541px) {
  .container > .navbar-header,
  .container-fluid > .navbar-header,
  .container > .navbar-collapse,
  .container-fluid > .navbar-collapse {
    margin-right: 0;
    margin-left: 0;
  }
}
.navbar-static-top {
  z-index: 1000;
  border-width: 0 0 1px;
}
@media (min-width: 541px) {
  .navbar-static-top {
    border-radius: 0;
  }
}
.navbar-fixed-top,
.navbar-fixed-bottom {
  position: fixed;
  right: 0;
  left: 0;
  z-index: 1030;
}
@media (min-width: 541px) {
  .navbar-fixed-top,
  .navbar-fixed-bottom {
    border-radius: 0;
  }
}
.navbar-fixed-top {
  top: 0;
  border-width: 0 0 1px;
}
.navbar-fixed-bottom {
  bottom: 0;
  margin-bottom: 0;
  border-width: 1px 0 0;
}
.navbar-brand {
  float: left;
  padding: 6px 0px;
  font-size: 17px;
  line-height: 18px;
  height: 30px;
}
.navbar-brand:hover,
.navbar-brand:focus {
  text-decoration: none;
}
.navbar-brand > img {
  display: block;
}
@media (min-width: 541px) {
  .navbar > .container .navbar-brand,
  .navbar > .container-fluid .navbar-brand {
    margin-left: 0px;
  }
}
.navbar-toggle {
  position: relative;
  float: right;
  margin-right: 0px;
  padding: 9px 10px;
  margin-top: -2px;
  margin-bottom: -2px;
  background-color: transparent;
  background-image: none;
  border: 1px solid transparent;
  border-radius: 2px;
}
.navbar-toggle:focus {
  outline: 0;
}
.navbar-toggle .icon-bar {
  display: block;
  width: 22px;
  height: 2px;
  border-radius: 1px;
}
.navbar-toggle .icon-bar + .icon-bar {
  margin-top: 4px;
}
@media (min-width: 541px) {
  .navbar-toggle {
    display: none;
  }
}
.navbar-nav {
  margin: 3px 0px;
}
.navbar-nav > li > a {
  padding-top: 10px;
  padding-bottom: 10px;
  line-height: 18px;
}
@media (max-width: 540px) {
  .navbar-nav .open .dropdown-menu {
    position: static;
    float: none;
    width: auto;
    margin-top: 0;
    background-color: transparent;
    border: 0;
    box-shadow: none;
  }
  .navbar-nav .open .dropdown-menu > li > a,
  .navbar-nav .open .dropdown-menu .dropdown-header {
    padding: 5px 15px 5px 25px;
  }
  .navbar-nav .open .dropdown-menu > li > a {
    line-height: 18px;
  }
  .navbar-nav .open .dropdown-menu > li > a:hover,
  .navbar-nav .open .dropdown-menu > li > a:focus {
    background-image: none;
  }
}
@media (min-width: 541px) {
  .navbar-nav {
    float: left;
    margin: 0;
  }
  .navbar-nav > li {
    float: left;
  }
  .navbar-nav > li > a {
    padding-top: 6px;
    padding-bottom: 6px;
  }
}
.navbar-form {
  margin-left: 0px;
  margin-right: 0px;
  padding: 10px 0px;
  border-top: 1px solid transparent;
  border-bottom: 1px solid transparent;
  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
  margin-top: -1px;
  margin-bottom: -1px;
}
@media (min-width: 768px) {
  .navbar-form .form-group {
    display: inline-block;
    margin-bottom: 0;
    vertical-align: middle;
  }
  .navbar-form .form-control {
    display: inline-block;
    width: auto;
    vertical-align: middle;
  }
  .navbar-form .form-control-static {
    display: inline-block;
  }
  .navbar-form .input-group {
    display: inline-table;
    vertical-align: middle;
  }
  .navbar-form .input-group .input-group-addon,
  .navbar-form .input-group .input-group-btn,
  .navbar-form .input-group .form-control {
    width: auto;
  }
  .navbar-form .input-group > .form-control {
    width: 100%;
  }
  .navbar-form .control-label {
    margin-bottom: 0;
    vertical-align: middle;
  }
  .navbar-form .radio,
  .navbar-form .checkbox {
    display: inline-block;
    margin-top: 0;
    margin-bottom: 0;
    vertical-align: middle;
  }
  .navbar-form .radio label,
  .navbar-form .checkbox label {
    padding-left: 0;
  }
  .navbar-form .radio input[type="radio"],
  .navbar-form .checkbox input[type="checkbox"] {
    position: relative;
    margin-left: 0;
  }
  .navbar-form .has-feedback .form-control-feedback {
    top: 0;
  }
}
@media (max-width: 540px) {
  .navbar-form .form-group {
    margin-bottom: 5px;
  }
  .navbar-form .form-group:last-child {
    margin-bottom: 0;
  }
}
@media (min-width: 541px) {
  .navbar-form {
    width: auto;
    border: 0;
    margin-left: 0;
    margin-right: 0;
    padding-top: 0;
    padding-bottom: 0;
    -webkit-box-shadow: none;
    box-shadow: none;
  }
}
.navbar-nav > li > .dropdown-menu {
  margin-top: 0;
  border-top-right-radius: 0;
  border-top-left-radius: 0;
}
.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {
  margin-bottom: 0;
  border-top-right-radius: 2px;
  border-top-left-radius: 2px;
  border-bottom-right-radius: 0;
  border-bottom-left-radius: 0;
}
.navbar-btn {
  margin-top: -1px;
  margin-bottom: -1px;
}
.navbar-btn.btn-sm {
  margin-top: 0px;
  margin-bottom: 0px;
}
.navbar-btn.btn-xs {
  margin-top: 4px;
  margin-bottom: 4px;
}
.navbar-text {
  margin-top: 6px;
  margin-bottom: 6px;
}
@media (min-width: 541px) {
  .navbar-text {
    float: left;
    margin-left: 0px;
    margin-right: 0px;
  }
}
@media (min-width: 541px) {
  .navbar-left {
    float: left !important;
    float: left;
  }
  .navbar-right {
    float: right !important;
    float: right;
    margin-right: 0px;
  }
  .navbar-right ~ .navbar-right {
    margin-right: 0;
  }
}
.navbar-default {
  background-color: #f8f8f8;
  border-color: #e7e7e7;
}
.navbar-default .navbar-brand {
  color: #777;
}
.navbar-default .navbar-brand:hover,
.navbar-default .navbar-brand:focus {
  color: #5e5e5e;
  background-color: transparent;
}
.navbar-default .navbar-text {
  color: #777;
}
.navbar-default .navbar-nav > li > a {
  color: #777;
}
.navbar-default .navbar-nav > li > a:hover,
.navbar-default .navbar-nav > li > a:focus {
  color: #333;
  background-color: transparent;
}
.navbar-default .navbar-nav > .active > a,
.navbar-default .navbar-nav > .active > a:hover,
.navbar-default .navbar-nav > .active > a:focus {
  color: #555;
  background-color: #e7e7e7;
}
.navbar-default .navbar-nav > .disabled > a,
.navbar-default .navbar-nav > .disabled > a:hover,
.navbar-default .navbar-nav > .disabled > a:focus {
  color: #ccc;
  background-color: transparent;
}
.navbar-default .navbar-toggle {
  border-color: #ddd;
}
.navbar-default .navbar-toggle:hover,
.navbar-default .navbar-toggle:focus {
  background-color: #ddd;
}
.navbar-default .navbar-toggle .icon-bar {
  background-color: #888;
}
.navbar-default .navbar-collapse,
.navbar-default .navbar-form {
  border-color: #e7e7e7;
}
.navbar-default .navbar-nav > .open > a,
.navbar-default .navbar-nav > .open > a:hover,
.navbar-default .navbar-nav > .open > a:focus {
  background-color: #e7e7e7;
  color: #555;
}
@media (max-width: 540px) {
  .navbar-default .navbar-nav .open .dropdown-menu > li > a {
    color: #777;
  }
  .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,
  .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {
    color: #333;
    background-color: transparent;
  }
  .navbar-default .navbar-nav .open .dropdown-menu > .active > a,
  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,
  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {
    color: #555;
    background-color: #e7e7e7;
  }
  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,
  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,
  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {
    color: #ccc;
    background-color: transparent;
  }
}
.navbar-default .navbar-link {
  color: #777;
}
.navbar-default .navbar-link:hover {
  color: #333;
}
.navbar-default .btn-link {
  color: #777;
}
.navbar-default .btn-link:hover,
.navbar-default .btn-link:focus {
  color: #333;
}
.navbar-default .btn-link[disabled]:hover,
fieldset[disabled] .navbar-default .btn-link:hover,
.navbar-default .btn-link[disabled]:focus,
fieldset[disabled] .navbar-default .btn-link:focus {
  color: #ccc;
}
.navbar-inverse {
  background-color: #222;
  border-color: #080808;
}
.navbar-inverse .navbar-brand {
  color: #9d9d9d;
}
.navbar-inverse .navbar-brand:hover,
.navbar-inverse .navbar-brand:focus {
  color: #fff;
  background-color: transparent;
}
.navbar-inverse .navbar-text {
  color: #9d9d9d;
}
.navbar-inverse .navbar-nav > li > a {
  color: #9d9d9d;
}
.navbar-inverse .navbar-nav > li > a:hover,
.navbar-inverse .navbar-nav > li > a:focus {
  color: #fff;
  background-color: transparent;
}
.navbar-inverse .navbar-nav > .active > a,
.navbar-inverse .navbar-nav > .active > a:hover,
.navbar-inverse .navbar-nav > .active > a:focus {
  color: #fff;
  background-color: #080808;
}
.navbar-inverse .navbar-nav > .disabled > a,
.navbar-inverse .navbar-nav > .disabled > a:hover,
.navbar-inverse .navbar-nav > .disabled > a:focus {
  color: #444;
  background-color: transparent;
}
.navbar-inverse .navbar-toggle {
  border-color: #333;
}
.navbar-inverse .navbar-toggle:hover,
.navbar-inverse .navbar-toggle:focus {
  background-color: #333;
}
.navbar-inverse .navbar-toggle .icon-bar {
  background-color: #fff;
}
.navbar-inverse .navbar-collapse,
.navbar-inverse .navbar-form {
  border-color: #101010;
}
.navbar-inverse .navbar-nav > .open > a,
.navbar-inverse .navbar-nav > .open > a:hover,
.navbar-inverse .navbar-nav > .open > a:focus {
  background-color: #080808;
  color: #fff;
}
@media (max-width: 540px) {
  .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {
    border-color: #080808;
  }
  .navbar-inverse .navbar-nav .open .dropdown-menu .divider {
    background-color: #080808;
  }
  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {
    color: #9d9d9d;
  }
  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,
  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {
    color: #fff;
    background-color: transparent;
  }
  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,
  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,
  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {
    color: #fff;
    background-color: #080808;
  }
  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,
  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,
  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {
    color: #444;
    background-color: transparent;
  }
}
.navbar-inverse .navbar-link {
  color: #9d9d9d;
}
.navbar-inverse .navbar-link:hover {
  color: #fff;
}
.navbar-inverse .btn-link {
  color: #9d9d9d;
}
.navbar-inverse .btn-link:hover,
.navbar-inverse .btn-link:focus {
  color: #fff;
}
.navbar-inverse .btn-link[disabled]:hover,
fieldset[disabled] .navbar-inverse .btn-link:hover,
.navbar-inverse .btn-link[disabled]:focus,
fieldset[disabled] .navbar-inverse .btn-link:focus {
  color: #444;
}
.breadcrumb {
  padding: 8px 15px;
  margin-bottom: 18px;
  list-style: none;
  background-color: #f5f5f5;
  border-radius: 2px;
}
.breadcrumb > li {
  display: inline-block;
}
.breadcrumb > li + li:before {
  content: "/\00a0";
  padding: 0 5px;
  color: #5e5e5e;
}
.breadcrumb > .active {
  color: #777777;
}
.pagination {
  display: inline-block;
  padding-left: 0;
  margin: 18px 0;
  border-radius: 2px;
}
.pagination > li {
  display: inline;
}
.pagination > li > a,
.pagination > li > span {
  position: relative;
  float: left;
  padding: 6px 12px;
  line-height: 1.42857143;
  text-decoration: none;
  color: #337ab7;
  background-color: #fff;
  border: 1px solid #ddd;
  margin-left: -1px;
}
.pagination > li:first-child > a,
.pagination > li:first-child > span {
  margin-left: 0;
  border-bottom-left-radius: 2px;
  border-top-left-radius: 2px;
}
.pagination > li:last-child > a,
.pagination > li:last-child > span {
  border-bottom-right-radius: 2px;
  border-top-right-radius: 2px;
}
.pagination > li > a:hover,
.pagination > li > span:hover,
.pagination > li > a:focus,
.pagination > li > span:focus {
  z-index: 2;
  color: #23527c;
  background-color: #eeeeee;
  border-color: #ddd;
}
.pagination > .active > a,
.pagination > .active > span,
.pagination > .active > a:hover,
.pagination > .active > span:hover,
.pagination > .active > a:focus,
.pagination > .active > span:focus {
  z-index: 3;
  color: #fff;
  background-color: #337ab7;
  border-color: #337ab7;
  cursor: default;
}
.pagination > .disabled > span,
.pagination > .disabled > span:hover,
.pagination > .disabled > span:focus,
.pagination > .disabled > a,
.pagination > .disabled > a:hover,
.pagination > .disabled > a:focus {
  color: #777777;
  background-color: #fff;
  border-color: #ddd;
  cursor: not-allowed;
}
.pagination-lg > li > a,
.pagination-lg > li > span {
  padding: 10px 16px;
  font-size: 17px;
  line-height: 1.3333333;
}
.pagination-lg > li:first-child > a,
.pagination-lg > li:first-child > span {
  border-bottom-left-radius: 3px;
  border-top-left-radius: 3px;
}
.pagination-lg > li:last-child > a,
.pagination-lg > li:last-child > span {
  border-bottom-right-radius: 3px;
  border-top-right-radius: 3px;
}
.pagination-sm > li > a,
.pagination-sm > li > span {
  padding: 5px 10px;
  font-size: 12px;
  line-height: 1.5;
}
.pagination-sm > li:first-child > a,
.pagination-sm > li:first-child > span {
  border-bottom-left-radius: 1px;
  border-top-left-radius: 1px;
}
.pagination-sm > li:last-child > a,
.pagination-sm > li:last-child > span {
  border-bottom-right-radius: 1px;
  border-top-right-radius: 1px;
}
.pager {
  padding-left: 0;
  margin: 18px 0;
  list-style: none;
  text-align: center;
}
.pager li {
  display: inline;
}
.pager li > a,
.pager li > span {
  display: inline-block;
  padding: 5px 14px;
  background-color: #fff;
  border: 1px solid #ddd;
  border-radius: 15px;
}
.pager li > a:hover,
.pager li > a:focus {
  text-decoration: none;
  background-color: #eeeeee;
}
.pager .next > a,
.pager .next > span {
  float: right;
}
.pager .previous > a,
.pager .previous > span {
  float: left;
}
.pager .disabled > a,
.pager .disabled > a:hover,
.pager .disabled > a:focus,
.pager .disabled > span {
  color: #777777;
  background-color: #fff;
  cursor: not-allowed;
}
.label {
  display: inline;
  padding: .2em .6em .3em;
  font-size: 75%;
  font-weight: bold;
  line-height: 1;
  color: #fff;
  text-align: center;
  white-space: nowrap;
  vertical-align: baseline;
  border-radius: .25em;
}
a.label:hover,
a.label:focus {
  color: #fff;
  text-decoration: none;
  cursor: pointer;
}
.label:empty {
  display: none;
}
.btn .label {
  position: relative;
  top: -1px;
}
.label-default {
  background-color: #777777;
}
.label-default[href]:hover,
.label-default[href]:focus {
  background-color: #5e5e5e;
}
.label-primary {
  background-color: #337ab7;
}
.label-primary[href]:hover,
.label-primary[href]:focus {
  background-color: #286090;
}
.label-success {
  background-color: #5cb85c;
}
.label-success[href]:hover,
.label-success[href]:focus {
  background-color: #449d44;
}
.label-info {
  background-color: #5bc0de;
}
.label-info[href]:hover,
.label-info[href]:focus {
  background-color: #31b0d5;
}
.label-warning {
  background-color: #f0ad4e;
}
.label-warning[href]:hover,
.label-warning[href]:focus {
  background-color: #ec971f;
}
.label-danger {
  background-color: #d9534f;
}
.label-danger[href]:hover,
.label-danger[href]:focus {
  background-color: #c9302c;
}
.badge {
  display: inline-block;
  min-width: 10px;
  padding: 3px 7px;
  font-size: 12px;
  font-weight: bold;
  color: #fff;
  line-height: 1;
  vertical-align: middle;
  white-space: nowrap;
  text-align: center;
  background-color: #777777;
  border-radius: 10px;
}
.badge:empty {
  display: none;
}
.btn .badge {
  position: relative;
  top: -1px;
}
.btn-xs .badge,
.btn-group-xs > .btn .badge {
  top: 0;
  padding: 1px 5px;
}
a.badge:hover,
a.badge:focus {
  color: #fff;
  text-decoration: none;
  cursor: pointer;
}
.list-group-item.active > .badge,
.nav-pills > .active > a > .badge {
  color: #337ab7;
  background-color: #fff;
}
.list-group-item > .badge {
  float: right;
}
.list-group-item > .badge + .badge {
  margin-right: 5px;
}
.nav-pills > li > a > .badge {
  margin-left: 3px;
}
.jumbotron {
  padding-top: 30px;
  padding-bottom: 30px;
  margin-bottom: 30px;
  color: inherit;
  background-color: #eeeeee;
}
.jumbotron h1,
.jumbotron .h1 {
  color: inherit;
}
.jumbotron p {
  margin-bottom: 15px;
  font-size: 20px;
  font-weight: 200;
}
.jumbotron > hr {
  border-top-color: #d5d5d5;
}
.container .jumbotron,
.container-fluid .jumbotron {
  border-radius: 3px;
  padding-left: 0px;
  padding-right: 0px;
}
.jumbotron .container {
  max-width: 100%;
}
@media screen and (min-width: 768px) {
  .jumbotron {
    padding-top: 48px;
    padding-bottom: 48px;
  }
  .container .jumbotron,
  .container-fluid .jumbotron {
    padding-left: 60px;
    padding-right: 60px;
  }
  .jumbotron h1,
  .jumbotron .h1 {
    font-size: 59px;
  }
}
.thumbnail {
  display: block;
  padding: 4px;
  margin-bottom: 18px;
  line-height: 1.42857143;
  background-color: #fff;
  border: 1px solid #ddd;
  border-radius: 2px;
  -webkit-transition: border 0.2s ease-in-out;
  -o-transition: border 0.2s ease-in-out;
  transition: border 0.2s ease-in-out;
}
.thumbnail > img,
.thumbnail a > img {
  margin-left: auto;
  margin-right: auto;
}
a.thumbnail:hover,
a.thumbnail:focus,
a.thumbnail.active {
  border-color: #337ab7;
}
.thumbnail .caption {
  padding: 9px;
  color: #000;
}
.alert {
  padding: 15px;
  margin-bottom: 18px;
  border: 1px solid transparent;
  border-radius: 2px;
}
.alert h4 {
  margin-top: 0;
  color: inherit;
}
.alert .alert-link {
  font-weight: bold;
}
.alert > p,
.alert > ul {
  margin-bottom: 0;
}
.alert > p + p {
  margin-top: 5px;
}
.alert-dismissable,
.alert-dismissible {
  padding-right: 35px;
}
.alert-dismissable .close,
.alert-dismissible .close {
  position: relative;
  top: -2px;
  right: -21px;
  color: inherit;
}
.alert-success {
  background-color: #dff0d8;
  border-color: #d6e9c6;
  color: #3c763d;
}
.alert-success hr {
  border-top-color: #c9e2b3;
}
.alert-success .alert-link {
  color: #2b542c;
}
.alert-info {
  background-color: #d9edf7;
  border-color: #bce8f1;
  color: #31708f;
}
.alert-info hr {
  border-top-color: #a6e1ec;
}
.alert-info .alert-link {
  color: #245269;
}
.alert-warning {
  background-color: #fcf8e3;
  border-color: #faebcc;
  color: #8a6d3b;
}
.alert-warning hr {
  border-top-color: #f7e1b5;
}
.alert-warning .alert-link {
  color: #66512c;
}
.alert-danger {
  background-color: #f2dede;
  border-color: #ebccd1;
  color: #a94442;
}
.alert-danger hr {
  border-top-color: #e4b9c0;
}
.alert-danger .alert-link {
  color: #843534;
}
@-webkit-keyframes progress-bar-stripes {
  from {
    background-position: 40px 0;
  }
  to {
    background-position: 0 0;
  }
}
@keyframes progress-bar-stripes {
  from {
    background-position: 40px 0;
  }
  to {
    background-position: 0 0;
  }
}
.progress {
  overflow: hidden;
  height: 18px;
  margin-bottom: 18px;
  background-color: #f5f5f5;
  border-radius: 2px;
  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
}
.progress-bar {
  float: left;
  width: 0%;
  height: 100%;
  font-size: 12px;
  line-height: 18px;
  color: #fff;
  text-align: center;
  background-color: #337ab7;
  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
  -webkit-transition: width 0.6s ease;
  -o-transition: width 0.6s ease;
  transition: width 0.6s ease;
}
.progress-striped .progress-bar,
.progress-bar-striped {
  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-size: 40px 40px;
}
.progress.active .progress-bar,
.progress-bar.active {
  -webkit-animation: progress-bar-stripes 2s linear infinite;
  -o-animation: progress-bar-stripes 2s linear infinite;
  animation: progress-bar-stripes 2s linear infinite;
}
.progress-bar-success {
  background-color: #5cb85c;
}
.progress-striped .progress-bar-success {
  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
}
.progress-bar-info {
  background-color: #5bc0de;
}
.progress-striped .progress-bar-info {
  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
}
.progress-bar-warning {
  background-color: #f0ad4e;
}
.progress-striped .progress-bar-warning {
  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
}
.progress-bar-danger {
  background-color: #d9534f;
}
.progress-striped .progress-bar-danger {
  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
}
.media {
  margin-top: 15px;
}
.media:first-child {
  margin-top: 0;
}
.media,
.media-body {
  zoom: 1;
  overflow: hidden;
}
.media-body {
  width: 10000px;
}
.media-object {
  display: block;
}
.media-object.img-thumbnail {
  max-width: none;
}
.media-right,
.media > .pull-right {
  padding-left: 10px;
}
.media-left,
.media > .pull-left {
  padding-right: 10px;
}
.media-left,
.media-right,
.media-body {
  display: table-cell;
  vertical-align: top;
}
.media-middle {
  vertical-align: middle;
}
.media-bottom {
  vertical-align: bottom;
}
.media-heading {
  margin-top: 0;
  margin-bottom: 5px;
}
.media-list {
  padding-left: 0;
  list-style: none;
}
.list-group {
  margin-bottom: 20px;
  padding-left: 0;
}
.list-group-item {
  position: relative;
  display: block;
  padding: 10px 15px;
  margin-bottom: -1px;
  background-color: #fff;
  border: 1px solid #ddd;
}
.list-group-item:first-child {
  border-top-right-radius: 2px;
  border-top-left-radius: 2px;
}
.list-group-item:last-child {
  margin-bottom: 0;
  border-bottom-right-radius: 2px;
  border-bottom-left-radius: 2px;
}
a.list-group-item,
button.list-group-item {
  color: #555;
}
a.list-group-item .list-group-item-heading,
button.list-group-item .list-group-item-heading {
  color: #333;
}
a.list-group-item:hover,
button.list-group-item:hover,
a.list-group-item:focus,
button.list-group-item:focus {
  text-decoration: none;
  color: #555;
  background-color: #f5f5f5;
}
button.list-group-item {
  width: 100%;
  text-align: left;
}
.list-group-item.disabled,
.list-group-item.disabled:hover,
.list-group-item.disabled:focus {
  background-color: #eeeeee;
  color: #777777;
  cursor: not-allowed;
}
.list-group-item.disabled .list-group-item-heading,
.list-group-item.disabled:hover .list-group-item-heading,
.list-group-item.disabled:focus .list-group-item-heading {
  color: inherit;
}
.list-group-item.disabled .list-group-item-text,
.list-group-item.disabled:hover .list-group-item-text,
.list-group-item.disabled:focus .list-group-item-text {
  color: #777777;
}
.list-group-item.active,
.list-group-item.active:hover,
.list-group-item.active:focus {
  z-index: 2;
  color: #fff;
  background-color: #337ab7;
  border-color: #337ab7;
}
.list-group-item.active .list-group-item-heading,
.list-group-item.active:hover .list-group-item-heading,
.list-group-item.active:focus .list-group-item-heading,
.list-group-item.active .list-group-item-heading > small,
.list-group-item.active:hover .list-group-item-heading > small,
.list-group-item.active:focus .list-group-item-heading > small,
.list-group-item.active .list-group-item-heading > .small,
.list-group-item.active:hover .list-group-item-heading > .small,
.list-group-item.active:focus .list-group-item-heading > .small {
  color: inherit;
}
.list-group-item.active .list-group-item-text,
.list-group-item.active:hover .list-group-item-text,
.list-group-item.active:focus .list-group-item-text {
  color: #c7ddef;
}
.list-group-item-success {
  color: #3c763d;
  background-color: #dff0d8;
}
a.list-group-item-success,
button.list-group-item-success {
  color: #3c763d;
}
a.list-group-item-success .list-group-item-heading,
button.list-group-item-success .list-group-item-heading {
  color: inherit;
}
a.list-group-item-success:hover,
button.list-group-item-success:hover,
a.list-group-item-success:focus,
button.list-group-item-success:focus {
  color: #3c763d;
  background-color: #d0e9c6;
}
a.list-group-item-success.active,
button.list-group-item-success.active,
a.list-group-item-success.active:hover,
button.list-group-item-success.active:hover,
a.list-group-item-success.active:focus,
button.list-group-item-success.active:focus {
  color: #fff;
  background-color: #3c763d;
  border-color: #3c763d;
}
.list-group-item-info {
  color: #31708f;
  background-color: #d9edf7;
}
a.list-group-item-info,
button.list-group-item-info {
  color: #31708f;
}
a.list-group-item-info .list-group-item-heading,
button.list-group-item-info .list-group-item-heading {
  color: inherit;
}
a.list-group-item-info:hover,
button.list-group-item-info:hover,
a.list-group-item-info:focus,
button.list-group-item-info:focus {
  color: #31708f;
  background-color: #c4e3f3;
}
a.list-group-item-info.active,
button.list-group-item-info.active,
a.list-group-item-info.active:hover,
button.list-group-item-info.active:hover,
a.list-group-item-info.active:focus,
button.list-group-item-info.active:focus {
  color: #fff;
  background-color: #31708f;
  border-color: #31708f;
}
.list-group-item-warning {
  color: #8a6d3b;
  background-color: #fcf8e3;
}
a.list-group-item-warning,
button.list-group-item-warning {
  color: #8a6d3b;
}
a.list-group-item-warning .list-group-item-heading,
button.list-group-item-warning .list-group-item-heading {
  color: inherit;
}
a.list-group-item-warning:hover,
button.list-group-item-warning:hover,
a.list-group-item-warning:focus,
button.list-group-item-warning:focus {
  color: #8a6d3b;
  background-color: #faf2cc;
}
a.list-group-item-warning.active,
button.list-group-item-warning.active,
a.list-group-item-warning.active:hover,
button.list-group-item-warning.active:hover,
a.list-group-item-warning.active:focus,
button.list-group-item-warning.active:focus {
  color: #fff;
  background-color: #8a6d3b;
  border-color: #8a6d3b;
}
.list-group-item-danger {
  color: #a94442;
  background-color: #f2dede;
}
a.list-group-item-danger,
button.list-group-item-danger {
  color: #a94442;
}
a.list-group-item-danger .list-group-item-heading,
button.list-group-item-danger .list-group-item-heading {
  color: inherit;
}
a.list-group-item-danger:hover,
button.list-group-item-danger:hover,
a.list-group-item-danger:focus,
button.list-group-item-danger:focus {
  color: #a94442;
  background-color: #ebcccc;
}
a.list-group-item-danger.active,
button.list-group-item-danger.active,
a.list-group-item-danger.active:hover,
button.list-group-item-danger.active:hover,
a.list-group-item-danger.active:focus,
button.list-group-item-danger.active:focus {
  color: #fff;
  background-color: #a94442;
  border-color: #a94442;
}
.list-group-item-heading {
  margin-top: 0;
  margin-bottom: 5px;
}
.list-group-item-text {
  margin-bottom: 0;
  line-height: 1.3;
}
.panel {
  margin-bottom: 18px;
  background-color: #fff;
  border: 1px solid transparent;
  border-radius: 2px;
  -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
  box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
}
.panel-body {
  padding: 15px;
}
.panel-heading {
  padding: 10px 15px;
  border-bottom: 1px solid transparent;
  border-top-right-radius: 1px;
  border-top-left-radius: 1px;
}
.panel-heading > .dropdown .dropdown-toggle {
  color: inherit;
}
.panel-title {
  margin-top: 0;
  margin-bottom: 0;
  font-size: 15px;
  color: inherit;
}
.panel-title > a,
.panel-title > small,
.panel-title > .small,
.panel-title > small > a,
.panel-title > .small > a {
  color: inherit;
}
.panel-footer {
  padding: 10px 15px;
  background-color: #f5f5f5;
  border-top: 1px solid #ddd;
  border-bottom-right-radius: 1px;
  border-bottom-left-radius: 1px;
}
.panel > .list-group,
.panel > .panel-collapse > .list-group {
  margin-bottom: 0;
}
.panel > .list-group .list-group-item,
.panel > .panel-collapse > .list-group .list-group-item {
  border-width: 1px 0;
  border-radius: 0;
}
.panel > .list-group:first-child .list-group-item:first-child,
.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {
  border-top: 0;
  border-top-right-radius: 1px;
  border-top-left-radius: 1px;
}
.panel > .list-group:last-child .list-group-item:last-child,
.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {
  border-bottom: 0;
  border-bottom-right-radius: 1px;
  border-bottom-left-radius: 1px;
}
.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child {
  border-top-right-radius: 0;
  border-top-left-radius: 0;
}
.panel-heading + .list-group .list-group-item:first-child {
  border-top-width: 0;
}
.list-group + .panel-footer {
  border-top-width: 0;
}
.panel > .table,
.panel > .table-responsive > .table,
.panel > .panel-collapse > .table {
  margin-bottom: 0;
}
.panel > .table caption,
.panel > .table-responsive > .table caption,
.panel > .panel-collapse > .table caption {
  padding-left: 15px;
  padding-right: 15px;
}
.panel > .table:first-child,
.panel > .table-responsive:first-child > .table:first-child {
  border-top-right-radius: 1px;
  border-top-left-radius: 1px;
}
.panel > .table:first-child > thead:first-child > tr:first-child,
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,
.panel > .table:first-child > tbody:first-child > tr:first-child,
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {
  border-top-left-radius: 1px;
  border-top-right-radius: 1px;
}
.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,
.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,
.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,
.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {
  border-top-left-radius: 1px;
}
.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,
.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,
.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,
.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {
  border-top-right-radius: 1px;
}
.panel > .table:last-child,
.panel > .table-responsive:last-child > .table:last-child {
  border-bottom-right-radius: 1px;
  border-bottom-left-radius: 1px;
}
.panel > .table:last-child > tbody:last-child > tr:last-child,
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,
.panel > .table:last-child > tfoot:last-child > tr:last-child,
.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {
  border-bottom-left-radius: 1px;
  border-bottom-right-radius: 1px;
}
.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,
.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,
.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,
.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {
  border-bottom-left-radius: 1px;
}
.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,
.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,
.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,
.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {
  border-bottom-right-radius: 1px;
}
.panel > .panel-body + .table,
.panel > .panel-body + .table-responsive,
.panel > .table + .panel-body,
.panel > .table-responsive + .panel-body {
  border-top: 1px solid #ddd;
}
.panel > .table > tbody:first-child > tr:first-child th,
.panel > .table > tbody:first-child > tr:first-child td {
  border-top: 0;
}
.panel > .table-bordered,
.panel > .table-responsive > .table-bordered {
  border: 0;
}
.panel > .table-bordered > thead > tr > th:first-child,
.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,
.panel > .table-bordered > tbody > tr > th:first-child,
.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,
.panel > .table-bordered > tfoot > tr > th:first-child,
.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,
.panel > .table-bordered > thead > tr > td:first-child,
.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,
.panel > .table-bordered > tbody > tr > td:first-child,
.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,
.panel > .table-bordered > tfoot > tr > td:first-child,
.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {
  border-left: 0;
}
.panel > .table-bordered > thead > tr > th:last-child,
.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,
.panel > .table-bordered > tbody > tr > th:last-child,
.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,
.panel > .table-bordered > tfoot > tr > th:last-child,
.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,
.panel > .table-bordered > thead > tr > td:last-child,
.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,
.panel > .table-bordered > tbody > tr > td:last-child,
.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,
.panel > .table-bordered > tfoot > tr > td:last-child,
.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {
  border-right: 0;
}
.panel > .table-bordered > thead > tr:first-child > td,
.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,
.panel > .table-bordered > tbody > tr:first-child > td,
.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,
.panel > .table-bordered > thead > tr:first-child > th,
.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,
.panel > .table-bordered > tbody > tr:first-child > th,
.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {
  border-bottom: 0;
}
.panel > .table-bordered > tbody > tr:last-child > td,
.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,
.panel > .table-bordered > tfoot > tr:last-child > td,
.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,
.panel > .table-bordered > tbody > tr:last-child > th,
.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,
.panel > .table-bordered > tfoot > tr:last-child > th,
.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {
  border-bottom: 0;
}
.panel > .table-responsive {
  border: 0;
  margin-bottom: 0;
}
.panel-group {
  margin-bottom: 18px;
}
.panel-group .panel {
  margin-bottom: 0;
  border-radius: 2px;
}
.panel-group .panel + .panel {
  margin-top: 5px;
}
.panel-group .panel-heading {
  border-bottom: 0;
}
.panel-group .panel-heading + .panel-collapse > .panel-body,
.panel-group .panel-heading + .panel-collapse > .list-group {
  border-top: 1px solid #ddd;
}
.panel-group .panel-footer {
  border-top: 0;
}
.panel-group .panel-footer + .panel-collapse .panel-body {
  border-bottom: 1px solid #ddd;
}
.panel-default {
  border-color: #ddd;
}
.panel-default > .panel-heading {
  color: #333333;
  background-color: #f5f5f5;
  border-color: #ddd;
}
.panel-default > .panel-heading + .panel-collapse > .panel-body {
  border-top-color: #ddd;
}
.panel-default > .panel-heading .badge {
  color: #f5f5f5;
  background-color: #333333;
}
.panel-default > .panel-footer + .panel-collapse > .panel-body {
  border-bottom-color: #ddd;
}
.panel-primary {
  border-color: #337ab7;
}
.panel-primary > .panel-heading {
  color: #fff;
  background-color: #337ab7;
  border-color: #337ab7;
}
.panel-primary > .panel-heading + .panel-collapse > .panel-body {
  border-top-color: #337ab7;
}
.panel-primary > .panel-heading .badge {
  color: #337ab7;
  background-color: #fff;
}
.panel-primary > .panel-footer + .panel-collapse > .panel-body {
  border-bottom-color: #337ab7;
}
.panel-success {
  border-color: #d6e9c6;
}
.panel-success > .panel-heading {
  color: #3c763d;
  background-color: #dff0d8;
  border-color: #d6e9c6;
}
.panel-success > .panel-heading + .panel-collapse > .panel-body {
  border-top-color: #d6e9c6;
}
.panel-success > .panel-heading .badge {
  color: #dff0d8;
  background-color: #3c763d;
}
.panel-success > .panel-footer + .panel-collapse > .panel-body {
  border-bottom-color: #d6e9c6;
}
.panel-info {
  border-color: #bce8f1;
}
.panel-info > .panel-heading {
  color: #31708f;
  background-color: #d9edf7;
  border-color: #bce8f1;
}
.panel-info > .panel-heading + .panel-collapse > .panel-body {
  border-top-color: #bce8f1;
}
.panel-info > .panel-heading .badge {
  color: #d9edf7;
  background-color: #31708f;
}
.panel-info > .panel-footer + .panel-collapse > .panel-body {
  border-bottom-color: #bce8f1;
}
.panel-warning {
  border-color: #faebcc;
}
.panel-warning > .panel-heading {
  color: #8a6d3b;
  background-color: #fcf8e3;
  border-color: #faebcc;
}
.panel-warning > .panel-heading + .panel-collapse > .panel-body {
  border-top-color: #faebcc;
}
.panel-warning > .panel-heading .badge {
  color: #fcf8e3;
  background-color: #8a6d3b;
}
.panel-warning > .panel-footer + .panel-collapse > .panel-body {
  border-bottom-color: #faebcc;
}
.panel-danger {
  border-color: #ebccd1;
}
.panel-danger > .panel-heading {
  color: #a94442;
  background-color: #f2dede;
  border-color: #ebccd1;
}
.panel-danger > .panel-heading + .panel-collapse > .panel-body {
  border-top-color: #ebccd1;
}
.panel-danger > .panel-heading .badge {
  color: #f2dede;
  background-color: #a94442;
}
.panel-danger > .panel-footer + .panel-collapse > .panel-body {
  border-bottom-color: #ebccd1;
}
.embed-responsive {
  position: relative;
  display: block;
  height: 0;
  padding: 0;
  overflow: hidden;
}
.embed-responsive .embed-responsive-item,
.embed-responsive iframe,
.embed-responsive embed,
.embed-responsive object,
.embed-responsive video {
  position: absolute;
  top: 0;
  left: 0;
  bottom: 0;
  height: 100%;
  width: 100%;
  border: 0;
}
.embed-responsive-16by9 {
  padding-bottom: 56.25%;
}
.embed-responsive-4by3 {
  padding-bottom: 75%;
}
.well {
  min-height: 20px;
  padding: 19px;
  margin-bottom: 20px;
  background-color: #f5f5f5;
  border: 1px solid #e3e3e3;
  border-radius: 2px;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
}
.well blockquote {
  border-color: #ddd;
  border-color: rgba(0, 0, 0, 0.15);
}
.well-lg {
  padding: 24px;
  border-radius: 3px;
}
.well-sm {
  padding: 9px;
  border-radius: 1px;
}
.close {
  float: right;
  font-size: 19.5px;
  font-weight: bold;
  line-height: 1;
  color: #000;
  text-shadow: 0 1px 0 #fff;
  opacity: 0.2;
  filter: alpha(opacity=20);
}
.close:hover,
.close:focus {
  color: #000;
  text-decoration: none;
  cursor: pointer;
  opacity: 0.5;
  filter: alpha(opacity=50);
}
button.close {
  padding: 0;
  cursor: pointer;
  background: transparent;
  border: 0;
  -webkit-appearance: none;
}
.modal-open {
  overflow: hidden;
}
.modal {
  display: none;
  overflow: hidden;
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  z-index: 1050;
  -webkit-overflow-scrolling: touch;
  outline: 0;
}
.modal.fade .modal-dialog {
  -webkit-transform: translate(0, -25%);
  -ms-transform: translate(0, -25%);
  -o-transform: translate(0, -25%);
  transform: translate(0, -25%);
  -webkit-transition: -webkit-transform 0.3s ease-out;
  -moz-transition: -moz-transform 0.3s ease-out;
  -o-transition: -o-transform 0.3s ease-out;
  transition: transform 0.3s ease-out;
}
.modal.in .modal-dialog {
  -webkit-transform: translate(0, 0);
  -ms-transform: translate(0, 0);
  -o-transform: translate(0, 0);
  transform: translate(0, 0);
}
.modal-open .modal {
  overflow-x: hidden;
  overflow-y: auto;
}
.modal-dialog {
  position: relative;
  width: auto;
  margin: 10px;
}
.modal-content {
  position: relative;
  background-color: #fff;
  border: 1px solid #999;
  border: 1px solid rgba(0, 0, 0, 0.2);
  border-radius: 3px;
  -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
  box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
  background-clip: padding-box;
  outline: 0;
}
.modal-backdrop {
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  z-index: 1040;
  background-color: #000;
}
.modal-backdrop.fade {
  opacity: 0;
  filter: alpha(opacity=0);
}
.modal-backdrop.in {
  opacity: 0.5;
  filter: alpha(opacity=50);
}
.modal-header {
  padding: 15px;
  border-bottom: 1px solid #e5e5e5;
}
.modal-header .close {
  margin-top: -2px;
}
.modal-title {
  margin: 0;
  line-height: 1.42857143;
}
.modal-body {
  position: relative;
  padding: 15px;
}
.modal-footer {
  padding: 15px;
  text-align: right;
  border-top: 1px solid #e5e5e5;
}
.modal-footer .btn + .btn {
  margin-left: 5px;
  margin-bottom: 0;
}
.modal-footer .btn-group .btn + .btn {
  margin-left: -1px;
}
.modal-footer .btn-block + .btn-block {
  margin-left: 0;
}
.modal-scrollbar-measure {
  position: absolute;
  top: -9999px;
  width: 50px;
  height: 50px;
  overflow: scroll;
}
@media (min-width: 768px) {
  .modal-dialog {
    width: 600px;
    margin: 30px auto;
  }
  .modal-content {
    -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
    box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
  }
  .modal-sm {
    width: 300px;
  }
}
@media (min-width: 992px) {
  .modal-lg {
    width: 900px;
  }
}
.tooltip {
  position: absolute;
  z-index: 1070;
  display: block;
  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-style: normal;
  font-weight: normal;
  letter-spacing: normal;
  line-break: auto;
  line-height: 1.42857143;
  text-align: left;
  text-align: start;
  text-decoration: none;
  text-shadow: none;
  text-transform: none;
  white-space: normal;
  word-break: normal;
  word-spacing: normal;
  word-wrap: normal;
  font-size: 12px;
  opacity: 0;
  filter: alpha(opacity=0);
}
.tooltip.in {
  opacity: 0.9;
  filter: alpha(opacity=90);
}
.tooltip.top {
  margin-top: -3px;
  padding: 5px 0;
}
.tooltip.right {
  margin-left: 3px;
  padding: 0 5px;
}
.tooltip.bottom {
  margin-top: 3px;
  padding: 5px 0;
}
.tooltip.left {
  margin-left: -3px;
  padding: 0 5px;
}
.tooltip-inner {
  max-width: 200px;
  padding: 3px 8px;
  color: #fff;
  text-align: center;
  background-color: #000;
  border-radius: 2px;
}
.tooltip-arrow {
  position: absolute;
  width: 0;
  height: 0;
  border-color: transparent;
  border-style: solid;
}
.tooltip.top .tooltip-arrow {
  bottom: 0;
  left: 50%;
  margin-left: -5px;
  border-width: 5px 5px 0;
  border-top-color: #000;
}
.tooltip.top-left .tooltip-arrow {
  bottom: 0;
  right: 5px;
  margin-bottom: -5px;
  border-width: 5px 5px 0;
  border-top-color: #000;
}
.tooltip.top-right .tooltip-arrow {
  bottom: 0;
  left: 5px;
  margin-bottom: -5px;
  border-width: 5px 5px 0;
  border-top-color: #000;
}
.tooltip.right .tooltip-arrow {
  top: 50%;
  left: 0;
  margin-top: -5px;
  border-width: 5px 5px 5px 0;
  border-right-color: #000;
}
.tooltip.left .tooltip-arrow {
  top: 50%;
  right: 0;
  margin-top: -5px;
  border-width: 5px 0 5px 5px;
  border-left-color: #000;
}
.tooltip.bottom .tooltip-arrow {
  top: 0;
  left: 50%;
  margin-left: -5px;
  border-width: 0 5px 5px;
  border-bottom-color: #000;
}
.tooltip.bottom-left .tooltip-arrow {
  top: 0;
  right: 5px;
  margin-top: -5px;
  border-width: 0 5px 5px;
  border-bottom-color: #000;
}
.tooltip.bottom-right .tooltip-arrow {
  top: 0;
  left: 5px;
  margin-top: -5px;
  border-width: 0 5px 5px;
  border-bottom-color: #000;
}
.popover {
  position: absolute;
  top: 0;
  left: 0;
  z-index: 1060;
  display: none;
  max-width: 276px;
  padding: 1px;
  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-style: normal;
  font-weight: normal;
  letter-spacing: normal;
  line-break: auto;
  line-height: 1.42857143;
  text-align: left;
  text-align: start;
  text-decoration: none;
  text-shadow: none;
  text-transform: none;
  white-space: normal;
  word-break: normal;
  word-spacing: normal;
  word-wrap: normal;
  font-size: 13px;
  background-color: #fff;
  background-clip: padding-box;
  border: 1px solid #ccc;
  border: 1px solid rgba(0, 0, 0, 0.2);
  border-radius: 3px;
  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
  box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
}
.popover.top {
  margin-top: -10px;
}
.popover.right {
  margin-left: 10px;
}
.popover.bottom {
  margin-top: 10px;
}
.popover.left {
  margin-left: -10px;
}
.popover-title {
  margin: 0;
  padding: 8px 14px;
  font-size: 13px;
  background-color: #f7f7f7;
  border-bottom: 1px solid #ebebeb;
  border-radius: 2px 2px 0 0;
}
.popover-content {
  padding: 9px 14px;
}
.popover > .arrow,
.popover > .arrow:after {
  position: absolute;
  display: block;
  width: 0;
  height: 0;
  border-color: transparent;
  border-style: solid;
}
.popover > .arrow {
  border-width: 11px;
}
.popover > .arrow:after {
  border-width: 10px;
  content: "";
}
.popover.top > .arrow {
  left: 50%;
  margin-left: -11px;
  border-bottom-width: 0;
  border-top-color: #999999;
  border-top-color: rgba(0, 0, 0, 0.25);
  bottom: -11px;
}
.popover.top > .arrow:after {
  content: " ";
  bottom: 1px;
  margin-left: -10px;
  border-bottom-width: 0;
  border-top-color: #fff;
}
.popover.right > .arrow {
  top: 50%;
  left: -11px;
  margin-top: -11px;
  border-left-width: 0;
  border-right-color: #999999;
  border-right-color: rgba(0, 0, 0, 0.25);
}
.popover.right > .arrow:after {
  content: " ";
  left: 1px;
  bottom: -10px;
  border-left-width: 0;
  border-right-color: #fff;
}
.popover.bottom > .arrow {
  left: 50%;
  margin-left: -11px;
  border-top-width: 0;
  border-bottom-color: #999999;
  border-bottom-color: rgba(0, 0, 0, 0.25);
  top: -11px;
}
.popover.bottom > .arrow:after {
  content: " ";
  top: 1px;
  margin-left: -10px;
  border-top-width: 0;
  border-bottom-color: #fff;
}
.popover.left > .arrow {
  top: 50%;
  right: -11px;
  margin-top: -11px;
  border-right-width: 0;
  border-left-color: #999999;
  border-left-color: rgba(0, 0, 0, 0.25);
}
.popover.left > .arrow:after {
  content: " ";
  right: 1px;
  border-right-width: 0;
  border-left-color: #fff;
  bottom: -10px;
}
.carousel {
  position: relative;
}
.carousel-inner {
  position: relative;
  overflow: hidden;
  width: 100%;
}
.carousel-inner > .item {
  display: none;
  position: relative;
  -webkit-transition: 0.6s ease-in-out left;
  -o-transition: 0.6s ease-in-out left;
  transition: 0.6s ease-in-out left;
}
.carousel-inner > .item > img,
.carousel-inner > .item > a > img {
  line-height: 1;
}
@media all and (transform-3d), (-webkit-transform-3d) {
  .carousel-inner > .item {
    -webkit-transition: -webkit-transform 0.6s ease-in-out;
    -moz-transition: -moz-transform 0.6s ease-in-out;
    -o-transition: -o-transform 0.6s ease-in-out;
    transition: transform 0.6s ease-in-out;
    -webkit-backface-visibility: hidden;
    -moz-backface-visibility: hidden;
    backface-visibility: hidden;
    -webkit-perspective: 1000px;
    -moz-perspective: 1000px;
    perspective: 1000px;
  }
  .carousel-inner > .item.next,
  .carousel-inner > .item.active.right {
    -webkit-transform: translate3d(100%, 0, 0);
    transform: translate3d(100%, 0, 0);
    left: 0;
  }
  .carousel-inner > .item.prev,
  .carousel-inner > .item.active.left {
    -webkit-transform: translate3d(-100%, 0, 0);
    transform: translate3d(-100%, 0, 0);
    left: 0;
  }
  .carousel-inner > .item.next.left,
  .carousel-inner > .item.prev.right,
  .carousel-inner > .item.active {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
    left: 0;
  }
}
.carousel-inner > .active,
.carousel-inner > .next,
.carousel-inner > .prev {
  display: block;
}
.carousel-inner > .active {
  left: 0;
}
.carousel-inner > .next,
.carousel-inner > .prev {
  position: absolute;
  top: 0;
  width: 100%;
}
.carousel-inner > .next {
  left: 100%;
}
.carousel-inner > .prev {
  left: -100%;
}
.carousel-inner > .next.left,
.carousel-inner > .prev.right {
  left: 0;
}
.carousel-inner > .active.left {
  left: -100%;
}
.carousel-inner > .active.right {
  left: 100%;
}
.carousel-control {
  position: absolute;
  top: 0;
  left: 0;
  bottom: 0;
  width: 15%;
  opacity: 0.5;
  filter: alpha(opacity=50);
  font-size: 20px;
  color: #fff;
  text-align: center;
  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
  background-color: rgba(0, 0, 0, 0);
}
.carousel-control.left {
  background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
  background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
  background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
  background-repeat: repeat-x;
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);
}
.carousel-control.right {
  left: auto;
  right: 0;
  background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
  background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
  background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
  background-repeat: repeat-x;
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);
}
.carousel-control:hover,
.carousel-control:focus {
  outline: 0;
  color: #fff;
  text-decoration: none;
  opacity: 0.9;
  filter: alpha(opacity=90);
}
.carousel-control .icon-prev,
.carousel-control .icon-next,
.carousel-control .glyphicon-chevron-left,
.carousel-control .glyphicon-chevron-right {
  position: absolute;
  top: 50%;
  margin-top: -10px;
  z-index: 5;
  display: inline-block;
}
.carousel-control .icon-prev,
.carousel-control .glyphicon-chevron-left {
  left: 50%;
  margin-left: -10px;
}
.carousel-control .icon-next,
.carousel-control .glyphicon-chevron-right {
  right: 50%;
  margin-right: -10px;
}
.carousel-control .icon-prev,
.carousel-control .icon-next {
  width: 20px;
  height: 20px;
  line-height: 1;
  font-family: serif;
}
.carousel-control .icon-prev:before {
  content: '\2039';
}
.carousel-control .icon-next:before {
  content: '\203a';
}
.carousel-indicators {
  position: absolute;
  bottom: 10px;
  left: 50%;
  z-index: 15;
  width: 60%;
  margin-left: -30%;
  padding-left: 0;
  list-style: none;
  text-align: center;
}
.carousel-indicators li {
  display: inline-block;
  width: 10px;
  height: 10px;
  margin: 1px;
  text-indent: -999px;
  border: 1px solid #fff;
  border-radius: 10px;
  cursor: pointer;
  background-color: #000 \9;
  background-color: rgba(0, 0, 0, 0);
}
.carousel-indicators .active {
  margin: 0;
  width: 12px;
  height: 12px;
  background-color: #fff;
}
.carousel-caption {
  position: absolute;
  left: 15%;
  right: 15%;
  bottom: 20px;
  z-index: 10;
  padding-top: 20px;
  padding-bottom: 20px;
  color: #fff;
  text-align: center;
  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
}
.carousel-caption .btn {
  text-shadow: none;
}
@media screen and (min-width: 768px) {
  .carousel-control .glyphicon-chevron-left,
  .carousel-control .glyphicon-chevron-right,
  .carousel-control .icon-prev,
  .carousel-control .icon-next {
    width: 30px;
    height: 30px;
    margin-top: -10px;
    font-size: 30px;
  }
  .carousel-control .glyphicon-chevron-left,
  .carousel-control .icon-prev {
    margin-left: -10px;
  }
  .carousel-control .glyphicon-chevron-right,
  .carousel-control .icon-next {
    margin-right: -10px;
  }
  .carousel-caption {
    left: 20%;
    right: 20%;
    padding-bottom: 30px;
  }
  .carousel-indicators {
    bottom: 20px;
  }
}
.clearfix:before,
.clearfix:after,
.dl-horizontal dd:before,
.dl-horizontal dd:after,
.container:before,
.container:after,
.container-fluid:before,
.container-fluid:after,
.row:before,
.row:after,
.form-horizontal .form-group:before,
.form-horizontal .form-group:after,
.btn-toolbar:before,
.btn-toolbar:after,
.btn-group-vertical > .btn-group:before,
.btn-group-vertical > .btn-group:after,
.nav:before,
.nav:after,
.navbar:before,
.navbar:after,
.navbar-header:before,
.navbar-header:after,
.navbar-collapse:before,
.navbar-collapse:after,
.pager:before,
.pager:after,
.panel-body:before,
.panel-body:after,
.modal-header:before,
.modal-header:after,
.modal-footer:before,
.modal-footer:after,
.item_buttons:before,
.item_buttons:after {
  content: " ";
  display: table;
}
.clearfix:after,
.dl-horizontal dd:after,
.container:after,
.container-fluid:after,
.row:after,
.form-horizontal .form-group:after,
.btn-toolbar:after,
.btn-group-vertical > .btn-group:after,
.nav:after,
.navbar:after,
.navbar-header:after,
.navbar-collapse:after,
.pager:after,
.panel-body:after,
.modal-header:after,
.modal-footer:after,
.item_buttons:after {
  clear: both;
}
.center-block {
  display: block;
  margin-left: auto;
  margin-right: auto;
}
.pull-right {
  float: right !important;
}
.pull-left {
  float: left !important;
}
.hide {
  display: none !important;
}
.show {
  display: block !important;
}
.invisible {
  visibility: hidden;
}
.text-hide {
  font: 0/0 a;
  color: transparent;
  text-shadow: none;
  background-color: transparent;
  border: 0;
}
.hidden {
  display: none !important;
}
.affix {
  position: fixed;
}
@-ms-viewport {
  width: device-width;
}
.visible-xs,
.visible-sm,
.visible-md,
.visible-lg {
  display: none !important;
}
.visible-xs-block,
.visible-xs-inline,
.visible-xs-inline-block,
.visible-sm-block,
.visible-sm-inline,
.visible-sm-inline-block,
.visible-md-block,
.visible-md-inline,
.visible-md-inline-block,
.visible-lg-block,
.visible-lg-inline,
.visible-lg-inline-block {
  display: none !important;
}
@media (max-width: 767px) {
  .visible-xs {
    display: block !important;
  }
  table.visible-xs {
    display: table !important;
  }
  tr.visible-xs {
    display: table-row !important;
  }
  th.visible-xs,
  td.visible-xs {
    display: table-cell !important;
  }
}
@media (max-width: 767px) {
  .visible-xs-block {
    display: block !important;
  }
}
@media (max-width: 767px) {
  .visible-xs-inline {
    display: inline !important;
  }
}
@media (max-width: 767px) {
  .visible-xs-inline-block {
    display: inline-block !important;
  }
}
@media (min-width: 768px) and (max-width: 991px) {
  .visible-sm {
    display: block !important;
  }
  table.visible-sm {
    display: table !important;
  }
  tr.visible-sm {
    display: table-row !important;
  }
  th.visible-sm,
  td.visible-sm {
    display: table-cell !important;
  }
}
@media (min-width: 768px) and (max-width: 991px) {
  .visible-sm-block {
    display: block !important;
  }
}
@media (min-width: 768px) and (max-width: 991px) {
  .visible-sm-inline {
    display: inline !important;
  }
}
@media (min-width: 768px) and (max-width: 991px) {
  .visible-sm-inline-block {
    display: inline-block !important;
  }
}
@media (min-width: 992px) and (max-width: 1199px) {
  .visible-md {
    display: block !important;
  }
  table.visible-md {
    display: table !important;
  }
  tr.visible-md {
    display: table-row !important;
  }
  th.visible-md,
  td.visible-md {
    display: table-cell !important;
  }
}
@media (min-width: 992px) and (max-width: 1199px) {
  .visible-md-block {
    display: block !important;
  }
}
@media (min-width: 992px) and (max-width: 1199px) {
  .visible-md-inline {
    display: inline !important;
  }
}
@media (min-width: 992px) and (max-width: 1199px) {
  .visible-md-inline-block {
    display: inline-block !important;
  }
}
@media (min-width: 1200px) {
  .visible-lg {
    display: block !important;
  }
  table.visible-lg {
    display: table !important;
  }
  tr.visible-lg {
    display: table-row !important;
  }
  th.visible-lg,
  td.visible-lg {
    display: table-cell !important;
  }
}
@media (min-width: 1200px) {
  .visible-lg-block {
    display: block !important;
  }
}
@media (min-width: 1200px) {
  .visible-lg-inline {
    display: inline !important;
  }
}
@media (min-width: 1200px) {
  .visible-lg-inline-block {
    display: inline-block !important;
  }
}
@media (max-width: 767px) {
  .hidden-xs {
    display: none !important;
  }
}
@media (min-width: 768px) and (max-width: 991px) {
  .hidden-sm {
    display: none !important;
  }
}
@media (min-width: 992px) and (max-width: 1199px) {
  .hidden-md {
    display: none !important;
  }
}
@media (min-width: 1200px) {
  .hidden-lg {
    display: none !important;
  }
}
.visible-print {
  display: none !important;
}
@media print {
  .visible-print {
    display: block !important;
  }
  table.visible-print {
    display: table !important;
  }
  tr.visible-print {
    display: table-row !important;
  }
  th.visible-print,
  td.visible-print {
    display: table-cell !important;
  }
}
.visible-print-block {
  display: none !important;
}
@media print {
  .visible-print-block {
    display: block !important;
  }
}
.visible-print-inline {
  display: none !important;
}
@media print {
  .visible-print-inline {
    display: inline !important;
  }
}
.visible-print-inline-block {
  display: none !important;
}
@media print {
  .visible-print-inline-block {
    display: inline-block !important;
  }
}
@media print {
  .hidden-print {
    display: none !important;
  }
}
/*!
*
* Font Awesome
*
*/
/*!
 *  Font Awesome 4.2.0 by @davegandy - http://fontawesome.io - @fontawesome
 *  License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
 */
/* FONT PATH
 * -------------------------- */
@font-face {
  font-family: 'FontAwesome';
  src: url('../components/font-awesome/fonts/fontawesome-webfont.eot?v=4.2.0');
  src: url('../components/font-awesome/fonts/fontawesome-webfont.eot?#iefix&v=4.2.0') format('embedded-opentype'), url('../components/font-awesome/fonts/fontawesome-webfont.woff?v=4.2.0') format('woff'), url('../components/font-awesome/fonts/fontawesome-webfont.ttf?v=4.2.0') format('truetype'), url('../components/font-awesome/fonts/fontawesome-webfont.svg?v=4.2.0#fontawesomeregular') format('svg');
  font-weight: normal;
  font-style: normal;
}
.fa {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
/* makes the font 33% larger relative to the icon container */
.fa-lg {
  font-size: 1.33333333em;
  line-height: 0.75em;
  vertical-align: -15%;
}
.fa-2x {
  font-size: 2em;
}
.fa-3x {
  font-size: 3em;
}
.fa-4x {
  font-size: 4em;
}
.fa-5x {
  font-size: 5em;
}
.fa-fw {
  width: 1.28571429em;
  text-align: center;
}
.fa-ul {
  padding-left: 0;
  margin-left: 2.14285714em;
  list-style-type: none;
}
.fa-ul > li {
  position: relative;
}
.fa-li {
  position: absolute;
  left: -2.14285714em;
  width: 2.14285714em;
  top: 0.14285714em;
  text-align: center;
}
.fa-li.fa-lg {
  left: -1.85714286em;
}
.fa-border {
  padding: .2em .25em .15em;
  border: solid 0.08em #eee;
  border-radius: .1em;
}
.pull-right {
  float: right;
}
.pull-left {
  float: left;
}
.fa.pull-left {
  margin-right: .3em;
}
.fa.pull-right {
  margin-left: .3em;
}
.fa-spin {
  -webkit-animation: fa-spin 2s infinite linear;
  animation: fa-spin 2s infinite linear;
}
@-webkit-keyframes fa-spin {
  0% {
    -webkit-transform: rotate(0deg);
    transform: rotate(0deg);
  }
  100% {
    -webkit-transform: rotate(359deg);
    transform: rotate(359deg);
  }
}
@keyframes fa-spin {
  0% {
    -webkit-transform: rotate(0deg);
    transform: rotate(0deg);
  }
  100% {
    -webkit-transform: rotate(359deg);
    transform: rotate(359deg);
  }
}
.fa-rotate-90 {
  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
  -webkit-transform: rotate(90deg);
  -ms-transform: rotate(90deg);
  transform: rotate(90deg);
}
.fa-rotate-180 {
  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);
  -webkit-transform: rotate(180deg);
  -ms-transform: rotate(180deg);
  transform: rotate(180deg);
}
.fa-rotate-270 {
  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
  -webkit-transform: rotate(270deg);
  -ms-transform: rotate(270deg);
  transform: rotate(270deg);
}
.fa-flip-horizontal {
  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);
  -webkit-transform: scale(-1, 1);
  -ms-transform: scale(-1, 1);
  transform: scale(-1, 1);
}
.fa-flip-vertical {
  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);
  -webkit-transform: scale(1, -1);
  -ms-transform: scale(1, -1);
  transform: scale(1, -1);
}
:root .fa-rotate-90,
:root .fa-rotate-180,
:root .fa-rotate-270,
:root .fa-flip-horizontal,
:root .fa-flip-vertical {
  filter: none;
}
.fa-stack {
  position: relative;
  display: inline-block;
  width: 2em;
  height: 2em;
  line-height: 2em;
  vertical-align: middle;
}
.fa-stack-1x,
.fa-stack-2x {
  position: absolute;
  left: 0;
  width: 100%;
  text-align: center;
}
.fa-stack-1x {
  line-height: inherit;
}
.fa-stack-2x {
  font-size: 2em;
}
.fa-inverse {
  color: #fff;
}
/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
   readers do not read off random characters that represent icons */
.fa-glass:before {
  content: "\f000";
}
.fa-music:before {
  content: "\f001";
}
.fa-search:before {
  content: "\f002";
}
.fa-envelope-o:before {
  content: "\f003";
}
.fa-heart:before {
  content: "\f004";
}
.fa-star:before {
  content: "\f005";
}
.fa-star-o:before {
  content: "\f006";
}
.fa-user:before {
  content: "\f007";
}
.fa-film:before {
  content: "\f008";
}
.fa-th-large:before {
  content: "\f009";
}
.fa-th:before {
  content: "\f00a";
}
.fa-th-list:before {
  content: "\f00b";
}
.fa-check:before {
  content: "\f00c";
}
.fa-remove:before,
.fa-close:before,
.fa-times:before {
  content: "\f00d";
}
.fa-search-plus:before {
  content: "\f00e";
}
.fa-search-minus:before {
  content: "\f010";
}
.fa-power-off:before {
  content: "\f011";
}
.fa-signal:before {
  content: "\f012";
}
.fa-gear:before,
.fa-cog:before {
  content: "\f013";
}
.fa-trash-o:before {
  content: "\f014";
}
.fa-home:before {
  content: "\f015";
}
.fa-file-o:before {
  content: "\f016";
}
.fa-clock-o:before {
  content: "\f017";
}
.fa-road:before {
  content: "\f018";
}
.fa-download:before {
  content: "\f019";
}
.fa-arrow-circle-o-down:before {
  content: "\f01a";
}
.fa-arrow-circle-o-up:before {
  content: "\f01b";
}
.fa-inbox:before {
  content: "\f01c";
}
.fa-play-circle-o:before {
  content: "\f01d";
}
.fa-rotate-right:before,
.fa-repeat:before {
  content: "\f01e";
}
.fa-refresh:before {
  content: "\f021";
}
.fa-list-alt:before {
  content: "\f022";
}
.fa-lock:before {
  content: "\f023";
}
.fa-flag:before {
  content: "\f024";
}
.fa-headphones:before {
  content: "\f025";
}
.fa-volume-off:before {
  content: "\f026";
}
.fa-volume-down:before {
  content: "\f027";
}
.fa-volume-up:before {
  content: "\f028";
}
.fa-qrcode:before {
  content: "\f029";
}
.fa-barcode:before {
  content: "\f02a";
}
.fa-tag:before {
  content: "\f02b";
}
.fa-tags:before {
  content: "\f02c";
}
.fa-book:before {
  content: "\f02d";
}
.fa-bookmark:before {
  content: "\f02e";
}
.fa-print:before {
  content: "\f02f";
}
.fa-camera:before {
  content: "\f030";
}
.fa-font:before {
  content: "\f031";
}
.fa-bold:before {
  content: "\f032";
}
.fa-italic:before {
  content: "\f033";
}
.fa-text-height:before {
  content: "\f034";
}
.fa-text-width:before {
  content: "\f035";
}
.fa-align-left:before {
  content: "\f036";
}
.fa-align-center:before {
  content: "\f037";
}
.fa-align-right:before {
  content: "\f038";
}
.fa-align-justify:before {
  content: "\f039";
}
.fa-list:before {
  content: "\f03a";
}
.fa-dedent:before,
.fa-outdent:before {
  content: "\f03b";
}
.fa-indent:before {
  content: "\f03c";
}
.fa-video-camera:before {
  content: "\f03d";
}
.fa-photo:before,
.fa-image:before,
.fa-picture-o:before {
  content: "\f03e";
}
.fa-pencil:before {
  content: "\f040";
}
.fa-map-marker:before {
  content: "\f041";
}
.fa-adjust:before {
  content: "\f042";
}
.fa-tint:before {
  content: "\f043";
}
.fa-edit:before,
.fa-pencil-square-o:before {
  content: "\f044";
}
.fa-share-square-o:before {
  content: "\f045";
}
.fa-check-square-o:before {
  content: "\f046";
}
.fa-arrows:before {
  content: "\f047";
}
.fa-step-backward:before {
  content: "\f048";
}
.fa-fast-backward:before {
  content: "\f049";
}
.fa-backward:before {
  content: "\f04a";
}
.fa-play:before {
  content: "\f04b";
}
.fa-pause:before {
  content: "\f04c";
}
.fa-stop:before {
  content: "\f04d";
}
.fa-forward:before {
  content: "\f04e";
}
.fa-fast-forward:before {
  content: "\f050";
}
.fa-step-forward:before {
  content: "\f051";
}
.fa-eject:before {
  content: "\f052";
}
.fa-chevron-left:before {
  content: "\f053";
}
.fa-chevron-right:before {
  content: "\f054";
}
.fa-plus-circle:before {
  content: "\f055";
}
.fa-minus-circle:before {
  content: "\f056";
}
.fa-times-circle:before {
  content: "\f057";
}
.fa-check-circle:before {
  content: "\f058";
}
.fa-question-circle:before {
  content: "\f059";
}
.fa-info-circle:before {
  content: "\f05a";
}
.fa-crosshairs:before {
  content: "\f05b";
}
.fa-times-circle-o:before {
  content: "\f05c";
}
.fa-check-circle-o:before {
  content: "\f05d";
}
.fa-ban:before {
  content: "\f05e";
}
.fa-arrow-left:before {
  content: "\f060";
}
.fa-arrow-right:before {
  content: "\f061";
}
.fa-arrow-up:before {
  content: "\f062";
}
.fa-arrow-down:before {
  content: "\f063";
}
.fa-mail-forward:before,
.fa-share:before {
  content: "\f064";
}
.fa-expand:before {
  content: "\f065";
}
.fa-compress:before {
  content: "\f066";
}
.fa-plus:before {
  content: "\f067";
}
.fa-minus:before {
  content: "\f068";
}
.fa-asterisk:before {
  content: "\f069";
}
.fa-exclamation-circle:before {
  content: "\f06a";
}
.fa-gift:before {
  content: "\f06b";
}
.fa-leaf:before {
  content: "\f06c";
}
.fa-fire:before {
  content: "\f06d";
}
.fa-eye:before {
  content: "\f06e";
}
.fa-eye-slash:before {
  content: "\f070";
}
.fa-warning:before,
.fa-exclamation-triangle:before {
  content: "\f071";
}
.fa-plane:before {
  content: "\f072";
}
.fa-calendar:before {
  content: "\f073";
}
.fa-random:before {
  content: "\f074";
}
.fa-comment:before {
  content: "\f075";
}
.fa-magnet:before {
  content: "\f076";
}
.fa-chevron-up:before {
  content: "\f077";
}
.fa-chevron-down:before {
  content: "\f078";
}
.fa-retweet:before {
  content: "\f079";
}
.fa-shopping-cart:before {
  content: "\f07a";
}
.fa-folder:before {
  content: "\f07b";
}
.fa-folder-open:before {
  content: "\f07c";
}
.fa-arrows-v:before {
  content: "\f07d";
}
.fa-arrows-h:before {
  content: "\f07e";
}
.fa-bar-chart-o:before,
.fa-bar-chart:before {
  content: "\f080";
}
.fa-twitter-square:before {
  content: "\f081";
}
.fa-facebook-square:before {
  content: "\f082";
}
.fa-camera-retro:before {
  content: "\f083";
}
.fa-key:before {
  content: "\f084";
}
.fa-gears:before,
.fa-cogs:before {
  content: "\f085";
}
.fa-comments:before {
  content: "\f086";
}
.fa-thumbs-o-up:before {
  content: "\f087";
}
.fa-thumbs-o-down:before {
  content: "\f088";
}
.fa-star-half:before {
  content: "\f089";
}
.fa-heart-o:before {
  content: "\f08a";
}
.fa-sign-out:before {
  content: "\f08b";
}
.fa-linkedin-square:before {
  content: "\f08c";
}
.fa-thumb-tack:before {
  content: "\f08d";
}
.fa-external-link:before {
  content: "\f08e";
}
.fa-sign-in:before {
  content: "\f090";
}
.fa-trophy:before {
  content: "\f091";
}
.fa-github-square:before {
  content: "\f092";
}
.fa-upload:before {
  content: "\f093";
}
.fa-lemon-o:before {
  content: "\f094";
}
.fa-phone:before {
  content: "\f095";
}
.fa-square-o:before {
  content: "\f096";
}
.fa-bookmark-o:before {
  content: "\f097";
}
.fa-phone-square:before {
  content: "\f098";
}
.fa-twitter:before {
  content: "\f099";
}
.fa-facebook:before {
  content: "\f09a";
}
.fa-github:before {
  content: "\f09b";
}
.fa-unlock:before {
  content: "\f09c";
}
.fa-credit-card:before {
  content: "\f09d";
}
.fa-rss:before {
  content: "\f09e";
}
.fa-hdd-o:before {
  content: "\f0a0";
}
.fa-bullhorn:before {
  content: "\f0a1";
}
.fa-bell:before {
  content: "\f0f3";
}
.fa-certificate:before {
  content: "\f0a3";
}
.fa-hand-o-right:before {
  content: "\f0a4";
}
.fa-hand-o-left:before {
  content: "\f0a5";
}
.fa-hand-o-up:before {
  content: "\f0a6";
}
.fa-hand-o-down:before {
  content: "\f0a7";
}
.fa-arrow-circle-left:before {
  content: "\f0a8";
}
.fa-arrow-circle-right:before {
  content: "\f0a9";
}
.fa-arrow-circle-up:before {
  content: "\f0aa";
}
.fa-arrow-circle-down:before {
  content: "\f0ab";
}
.fa-globe:before {
  content: "\f0ac";
}
.fa-wrench:before {
  content: "\f0ad";
}
.fa-tasks:before {
  content: "\f0ae";
}
.fa-filter:before {
  content: "\f0b0";
}
.fa-briefcase:before {
  content: "\f0b1";
}
.fa-arrows-alt:before {
  content: "\f0b2";
}
.fa-group:before,
.fa-users:before {
  content: "\f0c0";
}
.fa-chain:before,
.fa-link:before {
  content: "\f0c1";
}
.fa-cloud:before {
  content: "\f0c2";
}
.fa-flask:before {
  content: "\f0c3";
}
.fa-cut:before,
.fa-scissors:before {
  content: "\f0c4";
}
.fa-copy:before,
.fa-files-o:before {
  content: "\f0c5";
}
.fa-paperclip:before {
  content: "\f0c6";
}
.fa-save:before,
.fa-floppy-o:before {
  content: "\f0c7";
}
.fa-square:before {
  content: "\f0c8";
}
.fa-navicon:before,
.fa-reorder:before,
.fa-bars:before {
  content: "\f0c9";
}
.fa-list-ul:before {
  content: "\f0ca";
}
.fa-list-ol:before {
  content: "\f0cb";
}
.fa-strikethrough:before {
  content: "\f0cc";
}
.fa-underline:before {
  content: "\f0cd";
}
.fa-table:before {
  content: "\f0ce";
}
.fa-magic:before {
  content: "\f0d0";
}
.fa-truck:before {
  content: "\f0d1";
}
.fa-pinterest:before {
  content: "\f0d2";
}
.fa-pinterest-square:before {
  content: "\f0d3";
}
.fa-google-plus-square:before {
  content: "\f0d4";
}
.fa-google-plus:before {
  content: "\f0d5";
}
.fa-money:before {
  content: "\f0d6";
}
.fa-caret-down:before {
  content: "\f0d7";
}
.fa-caret-up:before {
  content: "\f0d8";
}
.fa-caret-left:before {
  content: "\f0d9";
}
.fa-caret-right:before {
  content: "\f0da";
}
.fa-columns:before {
  content: "\f0db";
}
.fa-unsorted:before,
.fa-sort:before {
  content: "\f0dc";
}
.fa-sort-down:before,
.fa-sort-desc:before {
  content: "\f0dd";
}
.fa-sort-up:before,
.fa-sort-asc:before {
  content: "\f0de";
}
.fa-envelope:before {
  content: "\f0e0";
}
.fa-linkedin:before {
  content: "\f0e1";
}
.fa-rotate-left:before,
.fa-undo:before {
  content: "\f0e2";
}
.fa-legal:before,
.fa-gavel:before {
  content: "\f0e3";
}
.fa-dashboard:before,
.fa-tachometer:before {
  content: "\f0e4";
}
.fa-comment-o:before {
  content: "\f0e5";
}
.fa-comments-o:before {
  content: "\f0e6";
}
.fa-flash:before,
.fa-bolt:before {
  content: "\f0e7";
}
.fa-sitemap:before {
  content: "\f0e8";
}
.fa-umbrella:before {
  content: "\f0e9";
}
.fa-paste:before,
.fa-clipboard:before {
  content: "\f0ea";
}
.fa-lightbulb-o:before {
  content: "\f0eb";
}
.fa-exchange:before {
  content: "\f0ec";
}
.fa-cloud-download:before {
  content: "\f0ed";
}
.fa-cloud-upload:before {
  content: "\f0ee";
}
.fa-user-md:before {
  content: "\f0f0";
}
.fa-stethoscope:before {
  content: "\f0f1";
}
.fa-suitcase:before {
  content: "\f0f2";
}
.fa-bell-o:before {
  content: "\f0a2";
}
.fa-coffee:before {
  content: "\f0f4";
}
.fa-cutlery:before {
  content: "\f0f5";
}
.fa-file-text-o:before {
  content: "\f0f6";
}
.fa-building-o:before {
  content: "\f0f7";
}
.fa-hospital-o:before {
  content: "\f0f8";
}
.fa-ambulance:before {
  content: "\f0f9";
}
.fa-medkit:before {
  content: "\f0fa";
}
.fa-fighter-jet:before {
  content: "\f0fb";
}
.fa-beer:before {
  content: "\f0fc";
}
.fa-h-square:before {
  content: "\f0fd";
}
.fa-plus-square:before {
  content: "\f0fe";
}
.fa-angle-double-left:before {
  content: "\f100";
}
.fa-angle-double-right:before {
  content: "\f101";
}
.fa-angle-double-up:before {
  content: "\f102";
}
.fa-angle-double-down:before {
  content: "\f103";
}
.fa-angle-left:before {
  content: "\f104";
}
.fa-angle-right:before {
  content: "\f105";
}
.fa-angle-up:before {
  content: "\f106";
}
.fa-angle-down:before {
  content: "\f107";
}
.fa-desktop:before {
  content: "\f108";
}
.fa-laptop:before {
  content: "\f109";
}
.fa-tablet:before {
  content: "\f10a";
}
.fa-mobile-phone:before,
.fa-mobile:before {
  content: "\f10b";
}
.fa-circle-o:before {
  content: "\f10c";
}
.fa-quote-left:before {
  content: "\f10d";
}
.fa-quote-right:before {
  content: "\f10e";
}
.fa-spinner:before {
  content: "\f110";
}
.fa-circle:before {
  content: "\f111";
}
.fa-mail-reply:before,
.fa-reply:before {
  content: "\f112";
}
.fa-github-alt:before {
  content: "\f113";
}
.fa-folder-o:before {
  content: "\f114";
}
.fa-folder-open-o:before {
  content: "\f115";
}
.fa-smile-o:before {
  content: "\f118";
}
.fa-frown-o:before {
  content: "\f119";
}
.fa-meh-o:before {
  content: "\f11a";
}
.fa-gamepad:before {
  content: "\f11b";
}
.fa-keyboard-o:before {
  content: "\f11c";
}
.fa-flag-o:before {
  content: "\f11d";
}
.fa-flag-checkered:before {
  content: "\f11e";
}
.fa-terminal:before {
  content: "\f120";
}
.fa-code:before {
  content: "\f121";
}
.fa-mail-reply-all:before,
.fa-reply-all:before {
  content: "\f122";
}
.fa-star-half-empty:before,
.fa-star-half-full:before,
.fa-star-half-o:before {
  content: "\f123";
}
.fa-location-arrow:before {
  content: "\f124";
}
.fa-crop:before {
  content: "\f125";
}
.fa-code-fork:before {
  content: "\f126";
}
.fa-unlink:before,
.fa-chain-broken:before {
  content: "\f127";
}
.fa-question:before {
  content: "\f128";
}
.fa-info:before {
  content: "\f129";
}
.fa-exclamation:before {
  content: "\f12a";
}
.fa-superscript:before {
  content: "\f12b";
}
.fa-subscript:before {
  content: "\f12c";
}
.fa-eraser:before {
  content: "\f12d";
}
.fa-puzzle-piece:before {
  content: "\f12e";
}
.fa-microphone:before {
  content: "\f130";
}
.fa-microphone-slash:before {
  content: "\f131";
}
.fa-shield:before {
  content: "\f132";
}
.fa-calendar-o:before {
  content: "\f133";
}
.fa-fire-extinguisher:before {
  content: "\f134";
}
.fa-rocket:before {
  content: "\f135";
}
.fa-maxcdn:before {
  content: "\f136";
}
.fa-chevron-circle-left:before {
  content: "\f137";
}
.fa-chevron-circle-right:before {
  content: "\f138";
}
.fa-chevron-circle-up:before {
  content: "\f139";
}
.fa-chevron-circle-down:before {
  content: "\f13a";
}
.fa-html5:before {
  content: "\f13b";
}
.fa-css3:before {
  content: "\f13c";
}
.fa-anchor:before {
  content: "\f13d";
}
.fa-unlock-alt:before {
  content: "\f13e";
}
.fa-bullseye:before {
  content: "\f140";
}
.fa-ellipsis-h:before {
  content: "\f141";
}
.fa-ellipsis-v:before {
  content: "\f142";
}
.fa-rss-square:before {
  content: "\f143";
}
.fa-play-circle:before {
  content: "\f144";
}
.fa-ticket:before {
  content: "\f145";
}
.fa-minus-square:before {
  content: "\f146";
}
.fa-minus-square-o:before {
  content: "\f147";
}
.fa-level-up:before {
  content: "\f148";
}
.fa-level-down:before {
  content: "\f149";
}
.fa-check-square:before {
  content: "\f14a";
}
.fa-pencil-square:before {
  content: "\f14b";
}
.fa-external-link-square:before {
  content: "\f14c";
}
.fa-share-square:before {
  content: "\f14d";
}
.fa-compass:before {
  content: "\f14e";
}
.fa-toggle-down:before,
.fa-caret-square-o-down:before {
  content: "\f150";
}
.fa-toggle-up:before,
.fa-caret-square-o-up:before {
  content: "\f151";
}
.fa-toggle-right:before,
.fa-caret-square-o-right:before {
  content: "\f152";
}
.fa-euro:before,
.fa-eur:before {
  content: "\f153";
}
.fa-gbp:before {
  content: "\f154";
}
.fa-dollar:before,
.fa-usd:before {
  content: "\f155";
}
.fa-rupee:before,
.fa-inr:before {
  content: "\f156";
}
.fa-cny:before,
.fa-rmb:before,
.fa-yen:before,
.fa-jpy:before {
  content: "\f157";
}
.fa-ruble:before,
.fa-rouble:before,
.fa-rub:before {
  content: "\f158";
}
.fa-won:before,
.fa-krw:before {
  content: "\f159";
}
.fa-bitcoin:before,
.fa-btc:before {
  content: "\f15a";
}
.fa-file:before {
  content: "\f15b";
}
.fa-file-text:before {
  content: "\f15c";
}
.fa-sort-alpha-asc:before {
  content: "\f15d";
}
.fa-sort-alpha-desc:before {
  content: "\f15e";
}
.fa-sort-amount-asc:before {
  content: "\f160";
}
.fa-sort-amount-desc:before {
  content: "\f161";
}
.fa-sort-numeric-asc:before {
  content: "\f162";
}
.fa-sort-numeric-desc:before {
  content: "\f163";
}
.fa-thumbs-up:before {
  content: "\f164";
}
.fa-thumbs-down:before {
  content: "\f165";
}
.fa-youtube-square:before {
  content: "\f166";
}
.fa-youtube:before {
  content: "\f167";
}
.fa-xing:before {
  content: "\f168";
}
.fa-xing-square:before {
  content: "\f169";
}
.fa-youtube-play:before {
  content: "\f16a";
}
.fa-dropbox:before {
  content: "\f16b";
}
.fa-stack-overflow:before {
  content: "\f16c";
}
.fa-instagram:before {
  content: "\f16d";
}
.fa-flickr:before {
  content: "\f16e";
}
.fa-adn:before {
  content: "\f170";
}
.fa-bitbucket:before {
  content: "\f171";
}
.fa-bitbucket-square:before {
  content: "\f172";
}
.fa-tumblr:before {
  content: "\f173";
}
.fa-tumblr-square:before {
  content: "\f174";
}
.fa-long-arrow-down:before {
  content: "\f175";
}
.fa-long-arrow-up:before {
  content: "\f176";
}
.fa-long-arrow-left:before {
  content: "\f177";
}
.fa-long-arrow-right:before {
  content: "\f178";
}
.fa-apple:before {
  content: "\f179";
}
.fa-windows:before {
  content: "\f17a";
}
.fa-android:before {
  content: "\f17b";
}
.fa-linux:before {
  content: "\f17c";
}
.fa-dribbble:before {
  content: "\f17d";
}
.fa-skype:before {
  content: "\f17e";
}
.fa-foursquare:before {
  content: "\f180";
}
.fa-trello:before {
  content: "\f181";
}
.fa-female:before {
  content: "\f182";
}
.fa-male:before {
  content: "\f183";
}
.fa-gittip:before {
  content: "\f184";
}
.fa-sun-o:before {
  content: "\f185";
}
.fa-moon-o:before {
  content: "\f186";
}
.fa-archive:before {
  content: "\f187";
}
.fa-bug:before {
  content: "\f188";
}
.fa-vk:before {
  content: "\f189";
}
.fa-weibo:before {
  content: "\f18a";
}
.fa-renren:before {
  content: "\f18b";
}
.fa-pagelines:before {
  content: "\f18c";
}
.fa-stack-exchange:before {
  content: "\f18d";
}
.fa-arrow-circle-o-right:before {
  content: "\f18e";
}
.fa-arrow-circle-o-left:before {
  content: "\f190";
}
.fa-toggle-left:before,
.fa-caret-square-o-left:before {
  content: "\f191";
}
.fa-dot-circle-o:before {
  content: "\f192";
}
.fa-wheelchair:before {
  content: "\f193";
}
.fa-vimeo-square:before {
  content: "\f194";
}
.fa-turkish-lira:before,
.fa-try:before {
  content: "\f195";
}
.fa-plus-square-o:before {
  content: "\f196";
}
.fa-space-shuttle:before {
  content: "\f197";
}
.fa-slack:before {
  content: "\f198";
}
.fa-envelope-square:before {
  content: "\f199";
}
.fa-wordpress:before {
  content: "\f19a";
}
.fa-openid:before {
  content: "\f19b";
}
.fa-institution:before,
.fa-bank:before,
.fa-university:before {
  content: "\f19c";
}
.fa-mortar-board:before,
.fa-graduation-cap:before {
  content: "\f19d";
}
.fa-yahoo:before {
  content: "\f19e";
}
.fa-google:before {
  content: "\f1a0";
}
.fa-reddit:before {
  content: "\f1a1";
}
.fa-reddit-square:before {
  content: "\f1a2";
}
.fa-stumbleupon-circle:before {
  content: "\f1a3";
}
.fa-stumbleupon:before {
  content: "\f1a4";
}
.fa-delicious:before {
  content: "\f1a5";
}
.fa-digg:before {
  content: "\f1a6";
}
.fa-pied-piper:before {
  content: "\f1a7";
}
.fa-pied-piper-alt:before {
  content: "\f1a8";
}
.fa-drupal:before {
  content: "\f1a9";
}
.fa-joomla:before {
  content: "\f1aa";
}
.fa-language:before {
  content: "\f1ab";
}
.fa-fax:before {
  content: "\f1ac";
}
.fa-building:before {
  content: "\f1ad";
}
.fa-child:before {
  content: "\f1ae";
}
.fa-paw:before {
  content: "\f1b0";
}
.fa-spoon:before {
  content: "\f1b1";
}
.fa-cube:before {
  content: "\f1b2";
}
.fa-cubes:before {
  content: "\f1b3";
}
.fa-behance:before {
  content: "\f1b4";
}
.fa-behance-square:before {
  content: "\f1b5";
}
.fa-steam:before {
  content: "\f1b6";
}
.fa-steam-square:before {
  content: "\f1b7";
}
.fa-recycle:before {
  content: "\f1b8";
}
.fa-automobile:before,
.fa-car:before {
  content: "\f1b9";
}
.fa-cab:before,
.fa-taxi:before {
  content: "\f1ba";
}
.fa-tree:before {
  content: "\f1bb";
}
.fa-spotify:before {
  content: "\f1bc";
}
.fa-deviantart:before {
  content: "\f1bd";
}
.fa-soundcloud:before {
  content: "\f1be";
}
.fa-database:before {
  content: "\f1c0";
}
.fa-file-pdf-o:before {
  content: "\f1c1";
}
.fa-file-word-o:before {
  content: "\f1c2";
}
.fa-file-excel-o:before {
  content: "\f1c3";
}
.fa-file-powerpoint-o:before {
  content: "\f1c4";
}
.fa-file-photo-o:before,
.fa-file-picture-o:before,
.fa-file-image-o:before {
  content: "\f1c5";
}
.fa-file-zip-o:before,
.fa-file-archive-o:before {
  content: "\f1c6";
}
.fa-file-sound-o:before,
.fa-file-audio-o:before {
  content: "\f1c7";
}
.fa-file-movie-o:before,
.fa-file-video-o:before {
  content: "\f1c8";
}
.fa-file-code-o:before {
  content: "\f1c9";
}
.fa-vine:before {
  content: "\f1ca";
}
.fa-codepen:before {
  content: "\f1cb";
}
.fa-jsfiddle:before {
  content: "\f1cc";
}
.fa-life-bouy:before,
.fa-life-buoy:before,
.fa-life-saver:before,
.fa-support:before,
.fa-life-ring:before {
  content: "\f1cd";
}
.fa-circle-o-notch:before {
  content: "\f1ce";
}
.fa-ra:before,
.fa-rebel:before {
  content: "\f1d0";
}
.fa-ge:before,
.fa-empire:before {
  content: "\f1d1";
}
.fa-git-square:before {
  content: "\f1d2";
}
.fa-git:before {
  content: "\f1d3";
}
.fa-hacker-news:before {
  content: "\f1d4";
}
.fa-tencent-weibo:before {
  content: "\f1d5";
}
.fa-qq:before {
  content: "\f1d6";
}
.fa-wechat:before,
.fa-weixin:before {
  content: "\f1d7";
}
.fa-send:before,
.fa-paper-plane:before {
  content: "\f1d8";
}
.fa-send-o:before,
.fa-paper-plane-o:before {
  content: "\f1d9";
}
.fa-history:before {
  content: "\f1da";
}
.fa-circle-thin:before {
  content: "\f1db";
}
.fa-header:before {
  content: "\f1dc";
}
.fa-paragraph:before {
  content: "\f1dd";
}
.fa-sliders:before {
  content: "\f1de";
}
.fa-share-alt:before {
  content: "\f1e0";
}
.fa-share-alt-square:before {
  content: "\f1e1";
}
.fa-bomb:before {
  content: "\f1e2";
}
.fa-soccer-ball-o:before,
.fa-futbol-o:before {
  content: "\f1e3";
}
.fa-tty:before {
  content: "\f1e4";
}
.fa-binoculars:before {
  content: "\f1e5";
}
.fa-plug:before {
  content: "\f1e6";
}
.fa-slideshare:before {
  content: "\f1e7";
}
.fa-twitch:before {
  content: "\f1e8";
}
.fa-yelp:before {
  content: "\f1e9";
}
.fa-newspaper-o:before {
  content: "\f1ea";
}
.fa-wifi:before {
  content: "\f1eb";
}
.fa-calculator:before {
  content: "\f1ec";
}
.fa-paypal:before {
  content: "\f1ed";
}
.fa-google-wallet:before {
  content: "\f1ee";
}
.fa-cc-visa:before {
  content: "\f1f0";
}
.fa-cc-mastercard:before {
  content: "\f1f1";
}
.fa-cc-discover:before {
  content: "\f1f2";
}
.fa-cc-amex:before {
  content: "\f1f3";
}
.fa-cc-paypal:before {
  content: "\f1f4";
}
.fa-cc-stripe:before {
  content: "\f1f5";
}
.fa-bell-slash:before {
  content: "\f1f6";
}
.fa-bell-slash-o:before {
  content: "\f1f7";
}
.fa-trash:before {
  content: "\f1f8";
}
.fa-copyright:before {
  content: "\f1f9";
}
.fa-at:before {
  content: "\f1fa";
}
.fa-eyedropper:before {
  content: "\f1fb";
}
.fa-paint-brush:before {
  content: "\f1fc";
}
.fa-birthday-cake:before {
  content: "\f1fd";
}
.fa-area-chart:before {
  content: "\f1fe";
}
.fa-pie-chart:before {
  content: "\f200";
}
.fa-line-chart:before {
  content: "\f201";
}
.fa-lastfm:before {
  content: "\f202";
}
.fa-lastfm-square:before {
  content: "\f203";
}
.fa-toggle-off:before {
  content: "\f204";
}
.fa-toggle-on:before {
  content: "\f205";
}
.fa-bicycle:before {
  content: "\f206";
}
.fa-bus:before {
  content: "\f207";
}
.fa-ioxhost:before {
  content: "\f208";
}
.fa-angellist:before {
  content: "\f209";
}
.fa-cc:before {
  content: "\f20a";
}
.fa-shekel:before,
.fa-sheqel:before,
.fa-ils:before {
  content: "\f20b";
}
.fa-meanpath:before {
  content: "\f20c";
}
/*!
*
* IPython base
*
*/
.modal.fade .modal-dialog {
  -webkit-transform: translate(0, 0);
  -ms-transform: translate(0, 0);
  -o-transform: translate(0, 0);
  transform: translate(0, 0);
}
code {
  color: #000;
}
pre {
  font-size: inherit;
  line-height: inherit;
}
label {
  font-weight: normal;
}
/* Make the page background atleast 100% the height of the view port */
/* Make the page itself atleast 70% the height of the view port */
.border-box-sizing {
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
}
.corner-all {
  border-radius: 2px;
}
.no-padding {
  padding: 0px;
}
/* Flexible box model classes */
/* Taken from Alex Russell http://infrequently.org/2009/08/css-3-progress/ */
/* This file is a compatability layer.  It allows the usage of flexible box 
model layouts accross multiple browsers, including older browsers.  The newest,
universal implementation of the flexible box model is used when available (see
`Modern browsers` comments below).  Browsers that are known to implement this 
new spec completely include:

    Firefox 28.0+
    Chrome 29.0+
    Internet Explorer 11+ 
    Opera 17.0+

Browsers not listed, including Safari, are supported via the styling under the
`Old browsers` comments below.
*/
.hbox {
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: horizontal;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: horizontal;
  -moz-box-align: stretch;
  display: box;
  box-orient: horizontal;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: row;
  align-items: stretch;
}
.hbox > * {
  /* Old browsers */
  -webkit-box-flex: 0;
  -moz-box-flex: 0;
  box-flex: 0;
  /* Modern browsers */
  flex: none;
}
.vbox {
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: vertical;
  -moz-box-align: stretch;
  display: box;
  box-orient: vertical;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: column;
  align-items: stretch;
}
.vbox > * {
  /* Old browsers */
  -webkit-box-flex: 0;
  -moz-box-flex: 0;
  box-flex: 0;
  /* Modern browsers */
  flex: none;
}
.hbox.reverse,
.vbox.reverse,
.reverse {
  /* Old browsers */
  -webkit-box-direction: reverse;
  -moz-box-direction: reverse;
  box-direction: reverse;
  /* Modern browsers */
  flex-direction: row-reverse;
}
.hbox.box-flex0,
.vbox.box-flex0,
.box-flex0 {
  /* Old browsers */
  -webkit-box-flex: 0;
  -moz-box-flex: 0;
  box-flex: 0;
  /* Modern browsers */
  flex: none;
  width: auto;
}
.hbox.box-flex1,
.vbox.box-flex1,
.box-flex1 {
  /* Old browsers */
  -webkit-box-flex: 1;
  -moz-box-flex: 1;
  box-flex: 1;
  /* Modern browsers */
  flex: 1;
}
.hbox.box-flex,
.vbox.box-flex,
.box-flex {
  /* Old browsers */
  /* Old browsers */
  -webkit-box-flex: 1;
  -moz-box-flex: 1;
  box-flex: 1;
  /* Modern browsers */
  flex: 1;
}
.hbox.box-flex2,
.vbox.box-flex2,
.box-flex2 {
  /* Old browsers */
  -webkit-box-flex: 2;
  -moz-box-flex: 2;
  box-flex: 2;
  /* Modern browsers */
  flex: 2;
}
.box-group1 {
  /*  Deprecated */
  -webkit-box-flex-group: 1;
  -moz-box-flex-group: 1;
  box-flex-group: 1;
}
.box-group2 {
  /* Deprecated */
  -webkit-box-flex-group: 2;
  -moz-box-flex-group: 2;
  box-flex-group: 2;
}
.hbox.start,
.vbox.start,
.start {
  /* Old browsers */
  -webkit-box-pack: start;
  -moz-box-pack: start;
  box-pack: start;
  /* Modern browsers */
  justify-content: flex-start;
}
.hbox.end,
.vbox.end,
.end {
  /* Old browsers */
  -webkit-box-pack: end;
  -moz-box-pack: end;
  box-pack: end;
  /* Modern browsers */
  justify-content: flex-end;
}
.hbox.center,
.vbox.center,
.center {
  /* Old browsers */
  -webkit-box-pack: center;
  -moz-box-pack: center;
  box-pack: center;
  /* Modern browsers */
  justify-content: center;
}
.hbox.baseline,
.vbox.baseline,
.baseline {
  /* Old browsers */
  -webkit-box-pack: baseline;
  -moz-box-pack: baseline;
  box-pack: baseline;
  /* Modern browsers */
  justify-content: baseline;
}
.hbox.stretch,
.vbox.stretch,
.stretch {
  /* Old browsers */
  -webkit-box-pack: stretch;
  -moz-box-pack: stretch;
  box-pack: stretch;
  /* Modern browsers */
  justify-content: stretch;
}
.hbox.align-start,
.vbox.align-start,
.align-start {
  /* Old browsers */
  -webkit-box-align: start;
  -moz-box-align: start;
  box-align: start;
  /* Modern browsers */
  align-items: flex-start;
}
.hbox.align-end,
.vbox.align-end,
.align-end {
  /* Old browsers */
  -webkit-box-align: end;
  -moz-box-align: end;
  box-align: end;
  /* Modern browsers */
  align-items: flex-end;
}
.hbox.align-center,
.vbox.align-center,
.align-center {
  /* Old browsers */
  -webkit-box-align: center;
  -moz-box-align: center;
  box-align: center;
  /* Modern browsers */
  align-items: center;
}
.hbox.align-baseline,
.vbox.align-baseline,
.align-baseline {
  /* Old browsers */
  -webkit-box-align: baseline;
  -moz-box-align: baseline;
  box-align: baseline;
  /* Modern browsers */
  align-items: baseline;
}
.hbox.align-stretch,
.vbox.align-stretch,
.align-stretch {
  /* Old browsers */
  -webkit-box-align: stretch;
  -moz-box-align: stretch;
  box-align: stretch;
  /* Modern browsers */
  align-items: stretch;
}
div.error {
  margin: 2em;
  text-align: center;
}
div.error > h1 {
  font-size: 500%;
  line-height: normal;
}
div.error > p {
  font-size: 200%;
  line-height: normal;
}
div.traceback-wrapper {
  text-align: left;
  max-width: 800px;
  margin: auto;
}
/**
 * Primary styles
 *
 * Author: Jupyter Development Team
 */
body {
  background-color: #fff;
  /* This makes sure that the body covers the entire window and needs to
       be in a different element than the display: box in wrapper below */
  position: absolute;
  left: 0px;
  right: 0px;
  top: 0px;
  bottom: 0px;
  overflow: visible;
}
body > #header {
  /* Initially hidden to prevent FLOUC */
  display: none;
  background-color: #fff;
  /* Display over codemirror */
  position: relative;
  z-index: 100;
}
body > #header #header-container {
  padding-bottom: 5px;
  padding-top: 5px;
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
}
body > #header .header-bar {
  width: 100%;
  height: 1px;
  background: #e7e7e7;
  margin-bottom: -1px;
}
@media print {
  body > #header {
    display: none !important;
  }
}
#header-spacer {
  width: 100%;
  visibility: hidden;
}
@media print {
  #header-spacer {
    display: none;
  }
}
#ipython_notebook {
  padding-left: 0px;
  padding-top: 1px;
  padding-bottom: 1px;
}
@media (max-width: 991px) {
  #ipython_notebook {
    margin-left: 10px;
  }
}
#noscript {
  width: auto;
  padding-top: 16px;
  padding-bottom: 16px;
  text-align: center;
  font-size: 22px;
  color: red;
  font-weight: bold;
}
#ipython_notebook img {
  height: 28px;
}
#site {
  width: 100%;
  display: none;
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  overflow: auto;
}
@media print {
  #site {
    height: auto !important;
  }
}
/* Smaller buttons */
.ui-button .ui-button-text {
  padding: 0.2em 0.8em;
  font-size: 77%;
}
input.ui-button {
  padding: 0.3em 0.9em;
}
span#login_widget {
  float: right;
}
span#login_widget > .button,
#logout {
  color: #333;
  background-color: #fff;
  border-color: #ccc;
}
span#login_widget > .button:focus,
#logout:focus,
span#login_widget > .button.focus,
#logout.focus {
  color: #333;
  background-color: #e6e6e6;
  border-color: #8c8c8c;
}
span#login_widget > .button:hover,
#logout:hover {
  color: #333;
  background-color: #e6e6e6;
  border-color: #adadad;
}
span#login_widget > .button:active,
#logout:active,
span#login_widget > .button.active,
#logout.active,
.open > .dropdown-togglespan#login_widget > .button,
.open > .dropdown-toggle#logout {
  color: #333;
  background-color: #e6e6e6;
  border-color: #adadad;
}
span#login_widget > .button:active:hover,
#logout:active:hover,
span#login_widget > .button.active:hover,
#logout.active:hover,
.open > .dropdown-togglespan#login_widget > .button:hover,
.open > .dropdown-toggle#logout:hover,
span#login_widget > .button:active:focus,
#logout:active:focus,
span#login_widget > .button.active:focus,
#logout.active:focus,
.open > .dropdown-togglespan#login_widget > .button:focus,
.open > .dropdown-toggle#logout:focus,
span#login_widget > .button:active.focus,
#logout:active.focus,
span#login_widget > .button.active.focus,
#logout.active.focus,
.open > .dropdown-togglespan#login_widget > .button.focus,
.open > .dropdown-toggle#logout.focus {
  color: #333;
  background-color: #d4d4d4;
  border-color: #8c8c8c;
}
span#login_widget > .button:active,
#logout:active,
span#login_widget > .button.active,
#logout.active,
.open > .dropdown-togglespan#login_widget > .button,
.open > .dropdown-toggle#logout {
  background-image: none;
}
span#login_widget > .button.disabled:hover,
#logout.disabled:hover,
span#login_widget > .button[disabled]:hover,
#logout[disabled]:hover,
fieldset[disabled] span#login_widget > .button:hover,
fieldset[disabled] #logout:hover,
span#login_widget > .button.disabled:focus,
#logout.disabled:focus,
span#login_widget > .button[disabled]:focus,
#logout[disabled]:focus,
fieldset[disabled] span#login_widget > .button:focus,
fieldset[disabled] #logout:focus,
span#login_widget > .button.disabled.focus,
#logout.disabled.focus,
span#login_widget > .button[disabled].focus,
#logout[disabled].focus,
fieldset[disabled] span#login_widget > .button.focus,
fieldset[disabled] #logout.focus {
  background-color: #fff;
  border-color: #ccc;
}
span#login_widget > .button .badge,
#logout .badge {
  color: #fff;
  background-color: #333;
}
.nav-header {
  text-transform: none;
}
#header > span {
  margin-top: 10px;
}
.modal_stretch .modal-dialog {
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: vertical;
  -moz-box-align: stretch;
  display: box;
  box-orient: vertical;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: column;
  align-items: stretch;
  min-height: 80vh;
}
.modal_stretch .modal-dialog .modal-body {
  max-height: calc(100vh - 200px);
  overflow: auto;
  flex: 1;
}
@media (min-width: 768px) {
  .modal .modal-dialog {
    width: 700px;
  }
}
@media (min-width: 768px) {
  select.form-control {
    margin-left: 12px;
    margin-right: 12px;
  }
}
/*!
*
* IPython auth
*
*/
.center-nav {
  display: inline-block;
  margin-bottom: -4px;
}
/*!
*
* IPython tree view
*
*/
/* We need an invisible input field on top of the sentense*/
/* "Drag file onto the list ..." */
.alternate_upload {
  background-color: none;
  display: inline;
}
.alternate_upload.form {
  padding: 0;
  margin: 0;
}
.alternate_upload input.fileinput {
  text-align: center;
  vertical-align: middle;
  display: inline;
  opacity: 0;
  z-index: 2;
  width: 12ex;
  margin-right: -12ex;
}
.alternate_upload .btn-upload {
  height: 22px;
}
/**
 * Primary styles
 *
 * Author: Jupyter Development Team
 */
ul#tabs {
  margin-bottom: 4px;
}
ul#tabs a {
  padding-top: 6px;
  padding-bottom: 4px;
}
ul.breadcrumb a:focus,
ul.breadcrumb a:hover {
  text-decoration: none;
}
ul.breadcrumb i.icon-home {
  font-size: 16px;
  margin-right: 4px;
}
ul.breadcrumb span {
  color: #5e5e5e;
}
.list_toolbar {
  padding: 4px 0 4px 0;
  vertical-align: middle;
}
.list_toolbar .tree-buttons {
  padding-top: 1px;
}
.dynamic-buttons {
  padding-top: 3px;
  display: inline-block;
}
.list_toolbar [class*="span"] {
  min-height: 24px;
}
.list_header {
  font-weight: bold;
  background-color: #EEE;
}
.list_placeholder {
  font-weight: bold;
  padding-top: 4px;
  padding-bottom: 4px;
  padding-left: 7px;
  padding-right: 7px;
}
.list_container {
  margin-top: 4px;
  margin-bottom: 20px;
  border: 1px solid #ddd;
  border-radius: 2px;
}
.list_container > div {
  border-bottom: 1px solid #ddd;
}
.list_container > div:hover .list-item {
  background-color: red;
}
.list_container > div:last-child {
  border: none;
}
.list_item:hover .list_item {
  background-color: #ddd;
}
.list_item a {
  text-decoration: none;
}
.list_item:hover {
  background-color: #fafafa;
}
.list_header > div,
.list_item > div {
  padding-top: 4px;
  padding-bottom: 4px;
  padding-left: 7px;
  padding-right: 7px;
  line-height: 22px;
}
.list_header > div input,
.list_item > div input {
  margin-right: 7px;
  margin-left: 14px;
  vertical-align: baseline;
  line-height: 22px;
  position: relative;
  top: -1px;
}
.list_header > div .item_link,
.list_item > div .item_link {
  margin-left: -1px;
  vertical-align: baseline;
  line-height: 22px;
}
.new-file input[type=checkbox] {
  visibility: hidden;
}
.item_name {
  line-height: 22px;
  height: 24px;
}
.item_icon {
  font-size: 14px;
  color: #5e5e5e;
  margin-right: 7px;
  margin-left: 7px;
  line-height: 22px;
  vertical-align: baseline;
}
.item_buttons {
  line-height: 1em;
  margin-left: -5px;
}
.item_buttons .btn,
.item_buttons .btn-group,
.item_buttons .input-group {
  float: left;
}
.item_buttons > .btn,
.item_buttons > .btn-group,
.item_buttons > .input-group {
  margin-left: 5px;
}
.item_buttons .btn {
  min-width: 13ex;
}
.item_buttons .running-indicator {
  padding-top: 4px;
  color: #5cb85c;
}
.item_buttons .kernel-name {
  padding-top: 4px;
  color: #5bc0de;
  margin-right: 7px;
  float: left;
}
.toolbar_info {
  height: 24px;
  line-height: 24px;
}
.list_item input:not([type=checkbox]) {
  padding-top: 3px;
  padding-bottom: 3px;
  height: 22px;
  line-height: 14px;
  margin: 0px;
}
.highlight_text {
  color: blue;
}
#project_name {
  display: inline-block;
  padding-left: 7px;
  margin-left: -2px;
}
#project_name > .breadcrumb {
  padding: 0px;
  margin-bottom: 0px;
  background-color: transparent;
  font-weight: bold;
}
#tree-selector {
  padding-right: 0px;
}
#button-select-all {
  min-width: 50px;
}
#select-all {
  margin-left: 7px;
  margin-right: 2px;
}
.menu_icon {
  margin-right: 2px;
}
.tab-content .row {
  margin-left: 0px;
  margin-right: 0px;
}
.folder_icon:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f114";
}
.folder_icon:before.pull-left {
  margin-right: .3em;
}
.folder_icon:before.pull-right {
  margin-left: .3em;
}
.notebook_icon:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f02d";
  position: relative;
  top: -1px;
}
.notebook_icon:before.pull-left {
  margin-right: .3em;
}
.notebook_icon:before.pull-right {
  margin-left: .3em;
}
.running_notebook_icon:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f02d";
  position: relative;
  top: -1px;
  color: #5cb85c;
}
.running_notebook_icon:before.pull-left {
  margin-right: .3em;
}
.running_notebook_icon:before.pull-right {
  margin-left: .3em;
}
.file_icon:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f016";
  position: relative;
  top: -2px;
}
.file_icon:before.pull-left {
  margin-right: .3em;
}
.file_icon:before.pull-right {
  margin-left: .3em;
}
#notebook_toolbar .pull-right {
  padding-top: 0px;
  margin-right: -1px;
}
ul#new-menu {
  left: auto;
  right: 0;
}
.kernel-menu-icon {
  padding-right: 12px;
  width: 24px;
  content: "\f096";
}
.kernel-menu-icon:before {
  content: "\f096";
}
.kernel-menu-icon-current:before {
  content: "\f00c";
}
#tab_content {
  padding-top: 20px;
}
#running .panel-group .panel {
  margin-top: 3px;
  margin-bottom: 1em;
}
#running .panel-group .panel .panel-heading {
  background-color: #EEE;
  padding-top: 4px;
  padding-bottom: 4px;
  padding-left: 7px;
  padding-right: 7px;
  line-height: 22px;
}
#running .panel-group .panel .panel-heading a:focus,
#running .panel-group .panel .panel-heading a:hover {
  text-decoration: none;
}
#running .panel-group .panel .panel-body {
  padding: 0px;
}
#running .panel-group .panel .panel-body .list_container {
  margin-top: 0px;
  margin-bottom: 0px;
  border: 0px;
  border-radius: 0px;
}
#running .panel-group .panel .panel-body .list_container .list_item {
  border-bottom: 1px solid #ddd;
}
#running .panel-group .panel .panel-body .list_container .list_item:last-child {
  border-bottom: 0px;
}
.delete-button {
  display: none;
}
.duplicate-button {
  display: none;
}
.rename-button {
  display: none;
}
.shutdown-button {
  display: none;
}
.dynamic-instructions {
  display: inline-block;
  padding-top: 4px;
}
/*!
*
* IPython text editor webapp
*
*/
.selected-keymap i.fa {
  padding: 0px 5px;
}
.selected-keymap i.fa:before {
  content: "\f00c";
}
#mode-menu {
  overflow: auto;
  max-height: 20em;
}
.edit_app #header {
  -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
  box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
}
.edit_app #menubar .navbar {
  /* Use a negative 1 bottom margin, so the border overlaps the border of the
    header */
  margin-bottom: -1px;
}
.dirty-indicator {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  width: 20px;
}
.dirty-indicator.pull-left {
  margin-right: .3em;
}
.dirty-indicator.pull-right {
  margin-left: .3em;
}
.dirty-indicator-dirty {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  width: 20px;
}
.dirty-indicator-dirty.pull-left {
  margin-right: .3em;
}
.dirty-indicator-dirty.pull-right {
  margin-left: .3em;
}
.dirty-indicator-clean {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  width: 20px;
}
.dirty-indicator-clean.pull-left {
  margin-right: .3em;
}
.dirty-indicator-clean.pull-right {
  margin-left: .3em;
}
.dirty-indicator-clean:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f00c";
}
.dirty-indicator-clean:before.pull-left {
  margin-right: .3em;
}
.dirty-indicator-clean:before.pull-right {
  margin-left: .3em;
}
#filename {
  font-size: 16pt;
  display: table;
  padding: 0px 5px;
}
#current-mode {
  padding-left: 5px;
  padding-right: 5px;
}
#texteditor-backdrop {
  padding-top: 20px;
  padding-bottom: 20px;
}
@media not print {
  #texteditor-backdrop {
    background-color: #EEE;
  }
}
@media print {
  #texteditor-backdrop #texteditor-container .CodeMirror-gutter,
  #texteditor-backdrop #texteditor-container .CodeMirror-gutters {
    background-color: #fff;
  }
}
@media not print {
  #texteditor-backdrop #texteditor-container .CodeMirror-gutter,
  #texteditor-backdrop #texteditor-container .CodeMirror-gutters {
    background-color: #fff;
  }
}
@media not print {
  #texteditor-backdrop #texteditor-container {
    padding: 0px;
    background-color: #fff;
    -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
    box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
  }
}
/*!
*
* IPython notebook
*
*/
/* CSS font colors for translated ANSI colors. */
.ansibold {
  font-weight: bold;
}
/* use dark versions for foreground, to improve visibility */
.ansiblack {
  color: black;
}
.ansired {
  color: darkred;
}
.ansigreen {
  color: darkgreen;
}
.ansiyellow {
  color: #c4a000;
}
.ansiblue {
  color: darkblue;
}
.ansipurple {
  color: darkviolet;
}
.ansicyan {
  color: steelblue;
}
.ansigray {
  color: gray;
}
/* and light for background, for the same reason */
.ansibgblack {
  background-color: black;
}
.ansibgred {
  background-color: red;
}
.ansibggreen {
  background-color: green;
}
.ansibgyellow {
  background-color: yellow;
}
.ansibgblue {
  background-color: blue;
}
.ansibgpurple {
  background-color: magenta;
}
.ansibgcyan {
  background-color: cyan;
}
.ansibggray {
  background-color: gray;
}
div.cell {
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: vertical;
  -moz-box-align: stretch;
  display: box;
  box-orient: vertical;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: column;
  align-items: stretch;
  border-radius: 2px;
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  border-width: 1px;
  border-style: solid;
  border-color: transparent;
  width: 100%;
  padding: 5px;
  /* This acts as a spacer between cells, that is outside the border */
  margin: 0px;
  outline: none;
  border-left-width: 1px;
  padding-left: 5px;
  background: linear-gradient(to right, transparent -40px, transparent 1px, transparent 1px, transparent 100%);
}
div.cell.jupyter-soft-selected {
  border-left-color: #90CAF9;
  border-left-color: #E3F2FD;
  border-left-width: 1px;
  padding-left: 5px;
  border-right-color: #E3F2FD;
  border-right-width: 1px;
  background: #E3F2FD;
}
@media print {
  div.cell.jupyter-soft-selected {
    border-color: transparent;
  }
}
div.cell.selected {
  border-color: #ababab;
  border-left-width: 0px;
  padding-left: 6px;
  background: linear-gradient(to right, #42A5F5 -40px, #42A5F5 5px, transparent 5px, transparent 100%);
}
@media print {
  div.cell.selected {
    border-color: transparent;
  }
}
div.cell.selected.jupyter-soft-selected {
  border-left-width: 0;
  padding-left: 6px;
  background: linear-gradient(to right, #42A5F5 -40px, #42A5F5 7px, #E3F2FD 7px, #E3F2FD 100%);
}
.edit_mode div.cell.selected {
  border-color: #66BB6A;
  border-left-width: 0px;
  padding-left: 6px;
  background: linear-gradient(to right, #66BB6A -40px, #66BB6A 5px, transparent 5px, transparent 100%);
}
@media print {
  .edit_mode div.cell.selected {
    border-color: transparent;
  }
}
.prompt {
  /* This needs to be wide enough for 3 digit prompt numbers: In[100]: */
  min-width: 14ex;
  /* This padding is tuned to match the padding on the CodeMirror editor. */
  padding: 0.4em;
  margin: 0px;
  font-family: monospace;
  text-align: right;
  /* This has to match that of the the CodeMirror class line-height below */
  line-height: 1.21429em;
  /* Don't highlight prompt number selection */
  -webkit-touch-callout: none;
  -webkit-user-select: none;
  -khtml-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
  /* Use default cursor */
  cursor: default;
}
@media (max-width: 540px) {
  .prompt {
    text-align: left;
  }
}
div.inner_cell {
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: vertical;
  -moz-box-align: stretch;
  display: box;
  box-orient: vertical;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: column;
  align-items: stretch;
  /* Old browsers */
  -webkit-box-flex: 1;
  -moz-box-flex: 1;
  box-flex: 1;
  /* Modern browsers */
  flex: 1;
}
@-moz-document url-prefix() {
  div.inner_cell {
    overflow-x: hidden;
  }
}
/* input_area and input_prompt must match in top border and margin for alignment */
div.input_area {
  border: 1px solid #cfcfcf;
  border-radius: 2px;
  background: #f7f7f7;
  line-height: 1.21429em;
}
/* This is needed so that empty prompt areas can collapse to zero height when there
   is no content in the output_subarea and the prompt. The main purpose of this is
   to make sure that empty JavaScript output_subareas have no height. */
div.prompt:empty {
  padding-top: 0;
  padding-bottom: 0;
}
div.unrecognized_cell {
  padding: 5px 5px 5px 0px;
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: horizontal;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: horizontal;
  -moz-box-align: stretch;
  display: box;
  box-orient: horizontal;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: row;
  align-items: stretch;
}
div.unrecognized_cell .inner_cell {
  border-radius: 2px;
  padding: 5px;
  font-weight: bold;
  color: red;
  border: 1px solid #cfcfcf;
  background: #eaeaea;
}
div.unrecognized_cell .inner_cell a {
  color: inherit;
  text-decoration: none;
}
div.unrecognized_cell .inner_cell a:hover {
  color: inherit;
  text-decoration: none;
}
@media (max-width: 540px) {
  div.unrecognized_cell > div.prompt {
    display: none;
  }
}
div.code_cell {
  /* avoid page breaking on code cells when printing */
}
@media print {
  div.code_cell {
    page-break-inside: avoid;
  }
}
/* any special styling for code cells that are currently running goes here */
div.input {
  page-break-inside: avoid;
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: horizontal;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: horizontal;
  -moz-box-align: stretch;
  display: box;
  box-orient: horizontal;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: row;
  align-items: stretch;
}
@media (max-width: 540px) {
  div.input {
    /* Old browsers */
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-box-align: stretch;
    display: -moz-box;
    -moz-box-orient: vertical;
    -moz-box-align: stretch;
    display: box;
    box-orient: vertical;
    box-align: stretch;
    /* Modern browsers */
    display: flex;
    flex-direction: column;
    align-items: stretch;
  }
}
/* input_area and input_prompt must match in top border and margin for alignment */
div.input_prompt {
  color: #303F9F;
  border-top: 1px solid transparent;
}
div.input_area > div.highlight {
  margin: 0.4em;
  border: none;
  padding: 0px;
  background-color: transparent;
}
div.input_area > div.highlight > pre {
  margin: 0px;
  border: none;
  padding: 0px;
  background-color: transparent;
}
/* The following gets added to the <head> if it is detected that the user has a
 * monospace font with inconsistent normal/bold/italic height.  See
 * notebookmain.js.  Such fonts will have keywords vertically offset with
 * respect to the rest of the text.  The user should select a better font.
 * See: https://github.com/ipython/ipython/issues/1503
 *
 * .CodeMirror span {
 *      vertical-align: bottom;
 * }
 */
.CodeMirror {
  line-height: 1.21429em;
  /* Changed from 1em to our global default */
  font-size: 14px;
  height: auto;
  /* Changed to auto to autogrow */
  background: none;
  /* Changed from white to allow our bg to show through */
}
.CodeMirror-scroll {
  /*  The CodeMirror docs are a bit fuzzy on if overflow-y should be hidden or visible.*/
  /*  We have found that if it is visible, vertical scrollbars appear with font size changes.*/
  overflow-y: hidden;
  overflow-x: auto;
}
.CodeMirror-lines {
  /* In CM2, this used to be 0.4em, but in CM3 it went to 4px. We need the em value because */
  /* we have set a different line-height and want this to scale with that. */
  padding: 0.4em;
}
.CodeMirror-linenumber {
  padding: 0 8px 0 4px;
}
.CodeMirror-gutters {
  border-bottom-left-radius: 2px;
  border-top-left-radius: 2px;
}
.CodeMirror pre {
  /* In CM3 this went to 4px from 0 in CM2. We need the 0 value because of how we size */
  /* .CodeMirror-lines */
  padding: 0;
  border: 0;
  border-radius: 0;
}
/*

Original style from softwaremaniacs.org (c) Ivan Sagalaev <Maniac@SoftwareManiacs.Org>
Adapted from GitHub theme

*/
.highlight-base {
  color: #000;
}
.highlight-variable {
  color: #000;
}
.highlight-variable-2 {
  color: #1a1a1a;
}
.highlight-variable-3 {
  color: #333333;
}
.highlight-string {
  color: #BA2121;
}
.highlight-comment {
  color: #408080;
  font-style: italic;
}
.highlight-number {
  color: #080;
}
.highlight-atom {
  color: #88F;
}
.highlight-keyword {
  color: #008000;
  font-weight: bold;
}
.highlight-builtin {
  color: #008000;
}
.highlight-error {
  color: #f00;
}
.highlight-operator {
  color: #AA22FF;
  font-weight: bold;
}
.highlight-meta {
  color: #AA22FF;
}
/* previously not defined, copying from default codemirror */
.highlight-def {
  color: #00f;
}
.highlight-string-2 {
  color: #f50;
}
.highlight-qualifier {
  color: #555;
}
.highlight-bracket {
  color: #997;
}
.highlight-tag {
  color: #170;
}
.highlight-attribute {
  color: #00c;
}
.highlight-header {
  color: blue;
}
.highlight-quote {
  color: #090;
}
.highlight-link {
  color: #00c;
}
/* apply the same style to codemirror */
.cm-s-ipython span.cm-keyword {
  color: #008000;
  font-weight: bold;
}
.cm-s-ipython span.cm-atom {
  color: #88F;
}
.cm-s-ipython span.cm-number {
  color: #080;
}
.cm-s-ipython span.cm-def {
  color: #00f;
}
.cm-s-ipython span.cm-variable {
  color: #000;
}
.cm-s-ipython span.cm-operator {
  color: #AA22FF;
  font-weight: bold;
}
.cm-s-ipython span.cm-variable-2 {
  color: #1a1a1a;
}
.cm-s-ipython span.cm-variable-3 {
  color: #333333;
}
.cm-s-ipython span.cm-comment {
  color: #408080;
  font-style: italic;
}
.cm-s-ipython span.cm-string {
  color: #BA2121;
}
.cm-s-ipython span.cm-string-2 {
  color: #f50;
}
.cm-s-ipython span.cm-meta {
  color: #AA22FF;
}
.cm-s-ipython span.cm-qualifier {
  color: #555;
}
.cm-s-ipython span.cm-builtin {
  color: #008000;
}
.cm-s-ipython span.cm-bracket {
  color: #997;
}
.cm-s-ipython span.cm-tag {
  color: #170;
}
.cm-s-ipython span.cm-attribute {
  color: #00c;
}
.cm-s-ipython span.cm-header {
  color: blue;
}
.cm-s-ipython span.cm-quote {
  color: #090;
}
.cm-s-ipython span.cm-link {
  color: #00c;
}
.cm-s-ipython span.cm-error {
  color: #f00;
}
.cm-s-ipython span.cm-tab {
  background: url();
  background-position: right;
  background-repeat: no-repeat;
}
div.output_wrapper {
  /* this position must be relative to enable descendents to be absolute within it */
  position: relative;
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: vertical;
  -moz-box-align: stretch;
  display: box;
  box-orient: vertical;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: column;
  align-items: stretch;
  z-index: 1;
}
/* class for the output area when it should be height-limited */
div.output_scroll {
  /* ideally, this would be max-height, but FF barfs all over that */
  height: 24em;
  /* FF needs this *and the wrapper* to specify full width, or it will shrinkwrap */
  width: 100%;
  overflow: auto;
  border-radius: 2px;
  -webkit-box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.8);
  box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.8);
  display: block;
}
/* output div while it is collapsed */
div.output_collapsed {
  margin: 0px;
  padding: 0px;
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: vertical;
  -moz-box-align: stretch;
  display: box;
  box-orient: vertical;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: column;
  align-items: stretch;
}
div.out_prompt_overlay {
  height: 100%;
  padding: 0px 0.4em;
  position: absolute;
  border-radius: 2px;
}
div.out_prompt_overlay:hover {
  /* use inner shadow to get border that is computed the same on WebKit/FF */
  -webkit-box-shadow: inset 0 0 1px #000;
  box-shadow: inset 0 0 1px #000;
  background: rgba(240, 240, 240, 0.5);
}
div.output_prompt {
  color: #D84315;
}
/* This class is the outer container of all output sections. */
div.output_area {
  padding: 0px;
  page-break-inside: avoid;
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: horizontal;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: horizontal;
  -moz-box-align: stretch;
  display: box;
  box-orient: horizontal;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: row;
  align-items: stretch;
}
div.output_area .MathJax_Display {
  text-align: left !important;
}
div.output_area .rendered_html table {
  margin-left: 0;
  margin-right: 0;
}
div.output_area .rendered_html img {
  margin-left: 0;
  margin-right: 0;
}
div.output_area img,
div.output_area svg {
  max-width: 100%;
  height: auto;
}
div.output_area img.unconfined,
div.output_area svg.unconfined {
  max-width: none;
}
/* This is needed to protect the pre formating from global settings such
   as that of bootstrap */
.output {
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: vertical;
  -moz-box-align: stretch;
  display: box;
  box-orient: vertical;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: column;
  align-items: stretch;
}
@media (max-width: 540px) {
  div.output_area {
    /* Old browsers */
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-box-align: stretch;
    display: -moz-box;
    -moz-box-orient: vertical;
    -moz-box-align: stretch;
    display: box;
    box-orient: vertical;
    box-align: stretch;
    /* Modern browsers */
    display: flex;
    flex-direction: column;
    align-items: stretch;
  }
}
div.output_area pre {
  margin: 0;
  padding: 0;
  border: 0;
  vertical-align: baseline;
  color: black;
  background-color: transparent;
  border-radius: 0;
}
/* This class is for the output subarea inside the output_area and after
   the prompt div. */
div.output_subarea {
  overflow-x: auto;
  padding: 0.4em;
  /* Old browsers */
  -webkit-box-flex: 1;
  -moz-box-flex: 1;
  box-flex: 1;
  /* Modern browsers */
  flex: 1;
  max-width: calc(100% - 14ex);
}
div.output_scroll div.output_subarea {
  overflow-x: visible;
}
/* The rest of the output_* classes are for special styling of the different
   output types */
/* all text output has this class: */
div.output_text {
  text-align: left;
  color: #000;
  /* This has to match that of the the CodeMirror class line-height below */
  line-height: 1.21429em;
}
/* stdout/stderr are 'text' as well as 'stream', but execute_result/error are *not* streams */
div.output_stderr {
  background: #fdd;
  /* very light red background for stderr */
}
div.output_latex {
  text-align: left;
}
/* Empty output_javascript divs should have no height */
div.output_javascript:empty {
  padding: 0;
}
.js-error {
  color: darkred;
}
/* raw_input styles */
div.raw_input_container {
  line-height: 1.21429em;
  padding-top: 5px;
}
pre.raw_input_prompt {
  /* nothing needed here. */
}
input.raw_input {
  font-family: monospace;
  font-size: inherit;
  color: inherit;
  width: auto;
  /* make sure input baseline aligns with prompt */
  vertical-align: baseline;
  /* padding + margin = 0.5em between prompt and cursor */
  padding: 0em 0.25em;
  margin: 0em 0.25em;
}
input.raw_input:focus {
  box-shadow: none;
}
p.p-space {
  margin-bottom: 10px;
}
div.output_unrecognized {
  padding: 5px;
  font-weight: bold;
  color: red;
}
div.output_unrecognized a {
  color: inherit;
  text-decoration: none;
}
div.output_unrecognized a:hover {
  color: inherit;
  text-decoration: none;
}
.rendered_html {
  color: #000;
  /* any extras will just be numbers: */
}
.rendered_html em {
  font-style: italic;
}
.rendered_html strong {
  font-weight: bold;
}
.rendered_html u {
  text-decoration: underline;
}
.rendered_html :link {
  text-decoration: underline;
}
.rendered_html :visited {
  text-decoration: underline;
}
.rendered_html h1 {
  font-size: 185.7%;
  margin: 1.08em 0 0 0;
  font-weight: bold;
  line-height: 1.0;
}
.rendered_html h2 {
  font-size: 157.1%;
  margin: 1.27em 0 0 0;
  font-weight: bold;
  line-height: 1.0;
}
.rendered_html h3 {
  font-size: 128.6%;
  margin: 1.55em 0 0 0;
  font-weight: bold;
  line-height: 1.0;
}
.rendered_html h4 {
  font-size: 100%;
  margin: 2em 0 0 0;
  font-weight: bold;
  line-height: 1.0;
}
.rendered_html h5 {
  font-size: 100%;
  margin: 2em 0 0 0;
  font-weight: bold;
  line-height: 1.0;
  font-style: italic;
}
.rendered_html h6 {
  font-size: 100%;
  margin: 2em 0 0 0;
  font-weight: bold;
  line-height: 1.0;
  font-style: italic;
}
.rendered_html h1:first-child {
  margin-top: 0.538em;
}
.rendered_html h2:first-child {
  margin-top: 0.636em;
}
.rendered_html h3:first-child {
  margin-top: 0.777em;
}
.rendered_html h4:first-child {
  margin-top: 1em;
}
.rendered_html h5:first-child {
  margin-top: 1em;
}
.rendered_html h6:first-child {
  margin-top: 1em;
}
.rendered_html ul {
  list-style: disc;
  margin: 0em 2em;
  padding-left: 0px;
}
.rendered_html ul ul {
  list-style: square;
  margin: 0em 2em;
}
.rendered_html ul ul ul {
  list-style: circle;
  margin: 0em 2em;
}
.rendered_html ol {
  list-style: decimal;
  margin: 0em 2em;
  padding-left: 0px;
}
.rendered_html ol ol {
  list-style: upper-alpha;
  margin: 0em 2em;
}
.rendered_html ol ol ol {
  list-style: lower-alpha;
  margin: 0em 2em;
}
.rendered_html ol ol ol ol {
  list-style: lower-roman;
  margin: 0em 2em;
}
.rendered_html ol ol ol ol ol {
  list-style: decimal;
  margin: 0em 2em;
}
.rendered_html * + ul {
  margin-top: 1em;
}
.rendered_html * + ol {
  margin-top: 1em;
}
.rendered_html hr {
  color: black;
  background-color: black;
}
.rendered_html pre {
  margin: 1em 2em;
}
.rendered_html pre,
.rendered_html code {
  border: 0;
  background-color: #fff;
  color: #000;
  font-size: 100%;
  padding: 0px;
}
.rendered_html blockquote {
  margin: 1em 2em;
}
.rendered_html table {
  margin-left: auto;
  margin-right: auto;
  border: 1px solid black;
  border-collapse: collapse;
}
.rendered_html tr,
.rendered_html th,
.rendered_html td {
  border: 1px solid black;
  border-collapse: collapse;
  margin: 1em 2em;
}
.rendered_html td,
.rendered_html th {
  text-align: left;
  vertical-align: middle;
  padding: 4px;
}
.rendered_html th {
  font-weight: bold;
}
.rendered_html * + table {
  margin-top: 1em;
}
.rendered_html p {
  text-align: left;
}
.rendered_html * + p {
  margin-top: 1em;
}
.rendered_html img {
  display: block;
  margin-left: auto;
  margin-right: auto;
}
.rendered_html * + img {
  margin-top: 1em;
}
.rendered_html img,
.rendered_html svg {
  max-width: 100%;
  height: auto;
}
.rendered_html img.unconfined,
.rendered_html svg.unconfined {
  max-width: none;
}
div.text_cell {
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: horizontal;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: horizontal;
  -moz-box-align: stretch;
  display: box;
  box-orient: horizontal;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: row;
  align-items: stretch;
}
@media (max-width: 540px) {
  div.text_cell > div.prompt {
    display: none;
  }
}
div.text_cell_render {
  /*font-family: "Helvetica Neue", Arial, Helvetica, Geneva, sans-serif;*/
  outline: none;
  resize: none;
  width: inherit;
  border-style: none;
  padding: 0.5em 0.5em 0.5em 0.4em;
  color: #000;
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
}
a.anchor-link:link {
  text-decoration: none;
  padding: 0px 20px;
  visibility: hidden;
}
h1:hover .anchor-link,
h2:hover .anchor-link,
h3:hover .anchor-link,
h4:hover .anchor-link,
h5:hover .anchor-link,
h6:hover .anchor-link {
  visibility: visible;
}
.text_cell.rendered .input_area {
  display: none;
}
.text_cell.rendered .rendered_html {
  overflow-x: auto;
  overflow-y: hidden;
}
.text_cell.unrendered .text_cell_render {
  display: none;
}
.cm-header-1,
.cm-header-2,
.cm-header-3,
.cm-header-4,
.cm-header-5,
.cm-header-6 {
  font-weight: bold;
  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
}
.cm-header-1 {
  font-size: 185.7%;
}
.cm-header-2 {
  font-size: 157.1%;
}
.cm-header-3 {
  font-size: 128.6%;
}
.cm-header-4 {
  font-size: 110%;
}
.cm-header-5 {
  font-size: 100%;
  font-style: italic;
}
.cm-header-6 {
  font-size: 100%;
  font-style: italic;
}
/*!
*
* IPython notebook webapp
*
*/
@media (max-width: 767px) {
  .notebook_app {
    padding-left: 0px;
    padding-right: 0px;
  }
}
#ipython-main-app {
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  height: 100%;
}
div#notebook_panel {
  margin: 0px;
  padding: 0px;
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  height: 100%;
}
div#notebook {
  font-size: 14px;
  line-height: 20px;
  overflow-y: hidden;
  overflow-x: auto;
  width: 100%;
  /* This spaces the page away from the edge of the notebook area */
  padding-top: 20px;
  margin: 0px;
  outline: none;
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  min-height: 100%;
}
@media not print {
  #notebook-container {
    padding: 15px;
    background-color: #fff;
    min-height: 0;
    -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
    box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
  }
}
@media print {
  #notebook-container {
    width: 100%;
  }
}
div.ui-widget-content {
  border: 1px solid #ababab;
  outline: none;
}
pre.dialog {
  background-color: #f7f7f7;
  border: 1px solid #ddd;
  border-radius: 2px;
  padding: 0.4em;
  padding-left: 2em;
}
p.dialog {
  padding: 0.2em;
}
/* Word-wrap output correctly.  This is the CSS3 spelling, though Firefox seems
   to not honor it correctly.  Webkit browsers (Chrome, rekonq, Safari) do.
 */
pre,
code,
kbd,
samp {
  white-space: pre-wrap;
}
#fonttest {
  font-family: monospace;
}
p {
  margin-bottom: 0;
}
.end_space {
  min-height: 100px;
  transition: height .2s ease;
}
.notebook_app > #header {
  -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
  box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
}
@media not print {
  .notebook_app {
    background-color: #EEE;
  }
}
kbd {
  border-style: solid;
  border-width: 1px;
  box-shadow: none;
  margin: 2px;
  padding-left: 2px;
  padding-right: 2px;
  padding-top: 1px;
  padding-bottom: 1px;
}
/* CSS for the cell toolbar */
.celltoolbar {
  border: thin solid #CFCFCF;
  border-bottom: none;
  background: #EEE;
  border-radius: 2px 2px 0px 0px;
  width: 100%;
  height: 29px;
  padding-right: 4px;
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: horizontal;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: horizontal;
  -moz-box-align: stretch;
  display: box;
  box-orient: horizontal;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: row;
  align-items: stretch;
  /* Old browsers */
  -webkit-box-pack: end;
  -moz-box-pack: end;
  box-pack: end;
  /* Modern browsers */
  justify-content: flex-end;
  display: -webkit-flex;
}
@media print {
  .celltoolbar {
    display: none;
  }
}
.ctb_hideshow {
  display: none;
  vertical-align: bottom;
}
/* ctb_show is added to the ctb_hideshow div to show the cell toolbar.
   Cell toolbars are only shown when the ctb_global_show class is also set.
*/
.ctb_global_show .ctb_show.ctb_hideshow {
  display: block;
}
.ctb_global_show .ctb_show + .input_area,
.ctb_global_show .ctb_show + div.text_cell_input,
.ctb_global_show .ctb_show ~ div.text_cell_render {
  border-top-right-radius: 0px;
  border-top-left-radius: 0px;
}
.ctb_global_show .ctb_show ~ div.text_cell_render {
  border: 1px solid #cfcfcf;
}
.celltoolbar {
  font-size: 87%;
  padding-top: 3px;
}
.celltoolbar select {
  display: block;
  width: 100%;
  height: 32px;
  padding: 6px 12px;
  font-size: 13px;
  line-height: 1.42857143;
  color: #555555;
  background-color: #fff;
  background-image: none;
  border: 1px solid #ccc;
  border-radius: 2px;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
  -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
  transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
  height: 30px;
  padding: 5px 10px;
  font-size: 12px;
  line-height: 1.5;
  border-radius: 1px;
  width: inherit;
  font-size: inherit;
  height: 22px;
  padding: 0px;
  display: inline-block;
}
.celltoolbar select:focus {
  border-color: #66afe9;
  outline: 0;
  -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
  box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
}
.celltoolbar select::-moz-placeholder {
  color: #999;
  opacity: 1;
}
.celltoolbar select:-ms-input-placeholder {
  color: #999;
}
.celltoolbar select::-webkit-input-placeholder {
  color: #999;
}
.celltoolbar select::-ms-expand {
  border: 0;
  background-color: transparent;
}
.celltoolbar select[disabled],
.celltoolbar select[readonly],
fieldset[disabled] .celltoolbar select {
  background-color: #eeeeee;
  opacity: 1;
}
.celltoolbar select[disabled],
fieldset[disabled] .celltoolbar select {
  cursor: not-allowed;
}
textarea.celltoolbar select {
  height: auto;
}
select.celltoolbar select {
  height: 30px;
  line-height: 30px;
}
textarea.celltoolbar select,
select[multiple].celltoolbar select {
  height: auto;
}
.celltoolbar label {
  margin-left: 5px;
  margin-right: 5px;
}
.completions {
  position: absolute;
  z-index: 110;
  overflow: hidden;
  border: 1px solid #ababab;
  border-radius: 2px;
  -webkit-box-shadow: 0px 6px 10px -1px #adadad;
  box-shadow: 0px 6px 10px -1px #adadad;
  line-height: 1;
}
.completions select {
  background: white;
  outline: none;
  border: none;
  padding: 0px;
  margin: 0px;
  overflow: auto;
  font-family: monospace;
  font-size: 110%;
  color: #000;
  width: auto;
}
.completions select option.context {
  color: #286090;
}
#kernel_logo_widget {
  float: right !important;
  float: right;
}
#kernel_logo_widget .current_kernel_logo {
  display: none;
  margin-top: -1px;
  margin-bottom: -1px;
  width: 32px;
  height: 32px;
}
#menubar {
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  margin-top: 1px;
}
#menubar .navbar {
  border-top: 1px;
  border-radius: 0px 0px 2px 2px;
  margin-bottom: 0px;
}
#menubar .navbar-toggle {
  float: left;
  padding-top: 7px;
  padding-bottom: 7px;
  border: none;
}
#menubar .navbar-collapse {
  clear: left;
}
.nav-wrapper {
  border-bottom: 1px solid #e7e7e7;
}
i.menu-icon {
  padding-top: 4px;
}
ul#help_menu li a {
  overflow: hidden;
  padding-right: 2.2em;
}
ul#help_menu li a i {
  margin-right: -1.2em;
}
.dropdown-submenu {
  position: relative;
}
.dropdown-submenu > .dropdown-menu {
  top: 0;
  left: 100%;
  margin-top: -6px;
  margin-left: -1px;
}
.dropdown-submenu:hover > .dropdown-menu {
  display: block;
}
.dropdown-submenu > a:after {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  display: block;
  content: "\f0da";
  float: right;
  color: #333333;
  margin-top: 2px;
  margin-right: -10px;
}
.dropdown-submenu > a:after.pull-left {
  margin-right: .3em;
}
.dropdown-submenu > a:after.pull-right {
  margin-left: .3em;
}
.dropdown-submenu:hover > a:after {
  color: #262626;
}
.dropdown-submenu.pull-left {
  float: none;
}
.dropdown-submenu.pull-left > .dropdown-menu {
  left: -100%;
  margin-left: 10px;
}
#notification_area {
  float: right !important;
  float: right;
  z-index: 10;
}
.indicator_area {
  float: right !important;
  float: right;
  color: #777;
  margin-left: 5px;
  margin-right: 5px;
  width: 11px;
  z-index: 10;
  text-align: center;
  width: auto;
}
#kernel_indicator {
  float: right !important;
  float: right;
  color: #777;
  margin-left: 5px;
  margin-right: 5px;
  width: 11px;
  z-index: 10;
  text-align: center;
  width: auto;
  border-left: 1px solid;
}
#kernel_indicator .kernel_indicator_name {
  padding-left: 5px;
  padding-right: 5px;
}
#modal_indicator {
  float: right !important;
  float: right;
  color: #777;
  margin-left: 5px;
  margin-right: 5px;
  width: 11px;
  z-index: 10;
  text-align: center;
  width: auto;
}
#readonly-indicator {
  float: right !important;
  float: right;
  color: #777;
  margin-left: 5px;
  margin-right: 5px;
  width: 11px;
  z-index: 10;
  text-align: center;
  width: auto;
  margin-top: 2px;
  margin-bottom: 0px;
  margin-left: 0px;
  margin-right: 0px;
  display: none;
}
.modal_indicator:before {
  width: 1.28571429em;
  text-align: center;
}
.edit_mode .modal_indicator:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f040";
}
.edit_mode .modal_indicator:before.pull-left {
  margin-right: .3em;
}
.edit_mode .modal_indicator:before.pull-right {
  margin-left: .3em;
}
.command_mode .modal_indicator:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: ' ';
}
.command_mode .modal_indicator:before.pull-left {
  margin-right: .3em;
}
.command_mode .modal_indicator:before.pull-right {
  margin-left: .3em;
}
.kernel_idle_icon:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f10c";
}
.kernel_idle_icon:before.pull-left {
  margin-right: .3em;
}
.kernel_idle_icon:before.pull-right {
  margin-left: .3em;
}
.kernel_busy_icon:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f111";
}
.kernel_busy_icon:before.pull-left {
  margin-right: .3em;
}
.kernel_busy_icon:before.pull-right {
  margin-left: .3em;
}
.kernel_dead_icon:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f1e2";
}
.kernel_dead_icon:before.pull-left {
  margin-right: .3em;
}
.kernel_dead_icon:before.pull-right {
  margin-left: .3em;
}
.kernel_disconnected_icon:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f127";
}
.kernel_disconnected_icon:before.pull-left {
  margin-right: .3em;
}
.kernel_disconnected_icon:before.pull-right {
  margin-left: .3em;
}
.notification_widget {
  color: #777;
  z-index: 10;
  background: rgba(240, 240, 240, 0.5);
  margin-right: 4px;
  color: #333;
  background-color: #fff;
  border-color: #ccc;
}
.notification_widget:focus,
.notification_widget.focus {
  color: #333;
  background-color: #e6e6e6;
  border-color: #8c8c8c;
}
.notification_widget:hover {
  color: #333;
  background-color: #e6e6e6;
  border-color: #adadad;
}
.notification_widget:active,
.notification_widget.active,
.open > .dropdown-toggle.notification_widget {
  color: #333;
  background-color: #e6e6e6;
  border-color: #adadad;
}
.notification_widget:active:hover,
.notification_widget.active:hover,
.open > .dropdown-toggle.notification_widget:hover,
.notification_widget:active:focus,
.notification_widget.active:focus,
.open > .dropdown-toggle.notification_widget:focus,
.notification_widget:active.focus,
.notification_widget.active.focus,
.open > .dropdown-toggle.notification_widget.focus {
  color: #333;
  background-color: #d4d4d4;
  border-color: #8c8c8c;
}
.notification_widget:active,
.notification_widget.active,
.open > .dropdown-toggle.notification_widget {
  background-image: none;
}
.notification_widget.disabled:hover,
.notification_widget[disabled]:hover,
fieldset[disabled] .notification_widget:hover,
.notification_widget.disabled:focus,
.notification_widget[disabled]:focus,
fieldset[disabled] .notification_widget:focus,
.notification_widget.disabled.focus,
.notification_widget[disabled].focus,
fieldset[disabled] .notification_widget.focus {
  background-color: #fff;
  border-color: #ccc;
}
.notification_widget .badge {
  color: #fff;
  background-color: #333;
}
.notification_widget.warning {
  color: #fff;
  background-color: #f0ad4e;
  border-color: #eea236;
}
.notification_widget.warning:focus,
.notification_widget.warning.focus {
  color: #fff;
  background-color: #ec971f;
  border-color: #985f0d;
}
.notification_widget.warning:hover {
  color: #fff;
  background-color: #ec971f;
  border-color: #d58512;
}
.notification_widget.warning:active,
.notification_widget.warning.active,
.open > .dropdown-toggle.notification_widget.warning {
  color: #fff;
  background-color: #ec971f;
  border-color: #d58512;
}
.notification_widget.warning:active:hover,
.notification_widget.warning.active:hover,
.open > .dropdown-toggle.notification_widget.warning:hover,
.notification_widget.warning:active:focus,
.notification_widget.warning.active:focus,
.open > .dropdown-toggle.notification_widget.warning:focus,
.notification_widget.warning:active.focus,
.notification_widget.warning.active.focus,
.open > .dropdown-toggle.notification_widget.warning.focus {
  color: #fff;
  background-color: #d58512;
  border-color: #985f0d;
}
.notification_widget.warning:active,
.notification_widget.warning.active,
.open > .dropdown-toggle.notification_widget.warning {
  background-image: none;
}
.notification_widget.warning.disabled:hover,
.notification_widget.warning[disabled]:hover,
fieldset[disabled] .notification_widget.warning:hover,
.notification_widget.warning.disabled:focus,
.notification_widget.warning[disabled]:focus,
fieldset[disabled] .notification_widget.warning:focus,
.notification_widget.warning.disabled.focus,
.notification_widget.warning[disabled].focus,
fieldset[disabled] .notification_widget.warning.focus {
  background-color: #f0ad4e;
  border-color: #eea236;
}
.notification_widget.warning .badge {
  color: #f0ad4e;
  background-color: #fff;
}
.notification_widget.success {
  color: #fff;
  background-color: #5cb85c;
  border-color: #4cae4c;
}
.notification_widget.success:focus,
.notification_widget.success.focus {
  color: #fff;
  background-color: #449d44;
  border-color: #255625;
}
.notification_widget.success:hover {
  color: #fff;
  background-color: #449d44;
  border-color: #398439;
}
.notification_widget.success:active,
.notification_widget.success.active,
.open > .dropdown-toggle.notification_widget.success {
  color: #fff;
  background-color: #449d44;
  border-color: #398439;
}
.notification_widget.success:active:hover,
.notification_widget.success.active:hover,
.open > .dropdown-toggle.notification_widget.success:hover,
.notification_widget.success:active:focus,
.notification_widget.success.active:focus,
.open > .dropdown-toggle.notification_widget.success:focus,
.notification_widget.success:active.focus,
.notification_widget.success.active.focus,
.open > .dropdown-toggle.notification_widget.success.focus {
  color: #fff;
  background-color: #398439;
  border-color: #255625;
}
.notification_widget.success:active,
.notification_widget.success.active,
.open > .dropdown-toggle.notification_widget.success {
  background-image: none;
}
.notification_widget.success.disabled:hover,
.notification_widget.success[disabled]:hover,
fieldset[disabled] .notification_widget.success:hover,
.notification_widget.success.disabled:focus,
.notification_widget.success[disabled]:focus,
fieldset[disabled] .notification_widget.success:focus,
.notification_widget.success.disabled.focus,
.notification_widget.success[disabled].focus,
fieldset[disabled] .notification_widget.success.focus {
  background-color: #5cb85c;
  border-color: #4cae4c;
}
.notification_widget.success .badge {
  color: #5cb85c;
  background-color: #fff;
}
.notification_widget.info {
  color: #fff;
  background-color: #5bc0de;
  border-color: #46b8da;
}
.notification_widget.info:focus,
.notification_widget.info.focus {
  color: #fff;
  background-color: #31b0d5;
  border-color: #1b6d85;
}
.notification_widget.info:hover {
  color: #fff;
  background-color: #31b0d5;
  border-color: #269abc;
}
.notification_widget.info:active,
.notification_widget.info.active,
.open > .dropdown-toggle.notification_widget.info {
  color: #fff;
  background-color: #31b0d5;
  border-color: #269abc;
}
.notification_widget.info:active:hover,
.notification_widget.info.active:hover,
.open > .dropdown-toggle.notification_widget.info:hover,
.notification_widget.info:active:focus,
.notification_widget.info.active:focus,
.open > .dropdown-toggle.notification_widget.info:focus,
.notification_widget.info:active.focus,
.notification_widget.info.active.focus,
.open > .dropdown-toggle.notification_widget.info.focus {
  color: #fff;
  background-color: #269abc;
  border-color: #1b6d85;
}
.notification_widget.info:active,
.notification_widget.info.active,
.open > .dropdown-toggle.notification_widget.info {
  background-image: none;
}
.notification_widget.info.disabled:hover,
.notification_widget.info[disabled]:hover,
fieldset[disabled] .notification_widget.info:hover,
.notification_widget.info.disabled:focus,
.notification_widget.info[disabled]:focus,
fieldset[disabled] .notification_widget.info:focus,
.notification_widget.info.disabled.focus,
.notification_widget.info[disabled].focus,
fieldset[disabled] .notification_widget.info.focus {
  background-color: #5bc0de;
  border-color: #46b8da;
}
.notification_widget.info .badge {
  color: #5bc0de;
  background-color: #fff;
}
.notification_widget.danger {
  color: #fff;
  background-color: #d9534f;
  border-color: #d43f3a;
}
.notification_widget.danger:focus,
.notification_widget.danger.focus {
  color: #fff;
  background-color: #c9302c;
  border-color: #761c19;
}
.notification_widget.danger:hover {
  color: #fff;
  background-color: #c9302c;
  border-color: #ac2925;
}
.notification_widget.danger:active,
.notification_widget.danger.active,
.open > .dropdown-toggle.notification_widget.danger {
  color: #fff;
  background-color: #c9302c;
  border-color: #ac2925;
}
.notification_widget.danger:active:hover,
.notification_widget.danger.active:hover,
.open > .dropdown-toggle.notification_widget.danger:hover,
.notification_widget.danger:active:focus,
.notification_widget.danger.active:focus,
.open > .dropdown-toggle.notification_widget.danger:focus,
.notification_widget.danger:active.focus,
.notification_widget.danger.active.focus,
.open > .dropdown-toggle.notification_widget.danger.focus {
  color: #fff;
  background-color: #ac2925;
  border-color: #761c19;
}
.notification_widget.danger:active,
.notification_widget.danger.active,
.open > .dropdown-toggle.notification_widget.danger {
  background-image: none;
}
.notification_widget.danger.disabled:hover,
.notification_widget.danger[disabled]:hover,
fieldset[disabled] .notification_widget.danger:hover,
.notification_widget.danger.disabled:focus,
.notification_widget.danger[disabled]:focus,
fieldset[disabled] .notification_widget.danger:focus,
.notification_widget.danger.disabled.focus,
.notification_widget.danger[disabled].focus,
fieldset[disabled] .notification_widget.danger.focus {
  background-color: #d9534f;
  border-color: #d43f3a;
}
.notification_widget.danger .badge {
  color: #d9534f;
  background-color: #fff;
}
div#pager {
  background-color: #fff;
  font-size: 14px;
  line-height: 20px;
  overflow: hidden;
  display: none;
  position: fixed;
  bottom: 0px;
  width: 100%;
  max-height: 50%;
  padding-top: 8px;
  -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
  box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
  /* Display over codemirror */
  z-index: 100;
  /* Hack which prevents jquery ui resizable from changing top. */
  top: auto !important;
}
div#pager pre {
  line-height: 1.21429em;
  color: #000;
  background-color: #f7f7f7;
  padding: 0.4em;
}
div#pager #pager-button-area {
  position: absolute;
  top: 8px;
  right: 20px;
}
div#pager #pager-contents {
  position: relative;
  overflow: auto;
  width: 100%;
  height: 100%;
}
div#pager #pager-contents #pager-container {
  position: relative;
  padding: 15px 0px;
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
}
div#pager .ui-resizable-handle {
  top: 0px;
  height: 8px;
  background: #f7f7f7;
  border-top: 1px solid #cfcfcf;
  border-bottom: 1px solid #cfcfcf;
  /* This injects handle bars (a short, wide = symbol) for 
        the resize handle. */
}
div#pager .ui-resizable-handle::after {
  content: '';
  top: 2px;
  left: 50%;
  height: 3px;
  width: 30px;
  margin-left: -15px;
  position: absolute;
  border-top: 1px solid #cfcfcf;
}
.quickhelp {
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: horizontal;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: horizontal;
  -moz-box-align: stretch;
  display: box;
  box-orient: horizontal;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: row;
  align-items: stretch;
  line-height: 1.8em;
}
.shortcut_key {
  display: inline-block;
  width: 20ex;
  text-align: right;
  font-family: monospace;
}
.shortcut_descr {
  display: inline-block;
  /* Old browsers */
  -webkit-box-flex: 1;
  -moz-box-flex: 1;
  box-flex: 1;
  /* Modern browsers */
  flex: 1;
}
span.save_widget {
  margin-top: 6px;
}
span.save_widget span.filename {
  height: 1em;
  line-height: 1em;
  padding: 3px;
  margin-left: 16px;
  border: none;
  font-size: 146.5%;
  border-radius: 2px;
}
span.save_widget span.filename:hover {
  background-color: #e6e6e6;
}
span.checkpoint_status,
span.autosave_status {
  font-size: small;
}
@media (max-width: 767px) {
  span.save_widget {
    font-size: small;
  }
  span.checkpoint_status,
  span.autosave_status {
    display: none;
  }
}
@media (min-width: 768px) and (max-width: 991px) {
  span.checkpoint_status {
    display: none;
  }
  span.autosave_status {
    font-size: x-small;
  }
}
.toolbar {
  padding: 0px;
  margin-left: -5px;
  margin-top: 2px;
  margin-bottom: 5px;
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
}
.toolbar select,
.toolbar label {
  width: auto;
  vertical-align: middle;
  margin-right: 2px;
  margin-bottom: 0px;
  display: inline;
  font-size: 92%;
  margin-left: 0.3em;
  margin-right: 0.3em;
  padding: 0px;
  padding-top: 3px;
}
.toolbar .btn {
  padding: 2px 8px;
}
.toolbar .btn-group {
  margin-top: 0px;
  margin-left: 5px;
}
#maintoolbar {
  margin-bottom: -3px;
  margin-top: -8px;
  border: 0px;
  min-height: 27px;
  margin-left: 0px;
  padding-top: 11px;
  padding-bottom: 3px;
}
#maintoolbar .navbar-text {
  float: none;
  vertical-align: middle;
  text-align: right;
  margin-left: 5px;
  margin-right: 0px;
  margin-top: 0px;
}
.select-xs {
  height: 24px;
}
.pulse,
.dropdown-menu > li > a.pulse,
li.pulse > a.dropdown-toggle,
li.pulse.open > a.dropdown-toggle {
  background-color: #F37626;
  color: white;
}
/**
 * Primary styles
 *
 * Author: Jupyter Development Team
 */
/** WARNING IF YOU ARE EDITTING THIS FILE, if this is a .css file, It has a lot
 * of chance of beeing generated from the ../less/[samename].less file, you can
 * try to get back the less file by reverting somme commit in history
 **/
/*
 * We'll try to get something pretty, so we
 * have some strange css to have the scroll bar on
 * the left with fix button on the top right of the tooltip
 */
@-moz-keyframes fadeOut {
  from {
    opacity: 1;
  }
  to {
    opacity: 0;
  }
}
@-webkit-keyframes fadeOut {
  from {
    opacity: 1;
  }
  to {
    opacity: 0;
  }
}
@-moz-keyframes fadeIn {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}
@-webkit-keyframes fadeIn {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}
/*properties of tooltip after "expand"*/
.bigtooltip {
  overflow: auto;
  height: 200px;
  -webkit-transition-property: height;
  -webkit-transition-duration: 500ms;
  -moz-transition-property: height;
  -moz-transition-duration: 500ms;
  transition-property: height;
  transition-duration: 500ms;
}
/*properties of tooltip before "expand"*/
.smalltooltip {
  -webkit-transition-property: height;
  -webkit-transition-duration: 500ms;
  -moz-transition-property: height;
  -moz-transition-duration: 500ms;
  transition-property: height;
  transition-duration: 500ms;
  text-overflow: ellipsis;
  overflow: hidden;
  height: 80px;
}
.tooltipbuttons {
  position: absolute;
  padding-right: 15px;
  top: 0px;
  right: 0px;
}
.tooltiptext {
  /*avoid the button to overlap on some docstring*/
  padding-right: 30px;
}
.ipython_tooltip {
  max-width: 700px;
  /*fade-in animation when inserted*/
  -webkit-animation: fadeOut 400ms;
  -moz-animation: fadeOut 400ms;
  animation: fadeOut 400ms;
  -webkit-animation: fadeIn 400ms;
  -moz-animation: fadeIn 400ms;
  animation: fadeIn 400ms;
  vertical-align: middle;
  background-color: #f7f7f7;
  overflow: visible;
  border: #ababab 1px solid;
  outline: none;
  padding: 3px;
  margin: 0px;
  padding-left: 7px;
  font-family: monospace;
  min-height: 50px;
  -moz-box-shadow: 0px 6px 10px -1px #adadad;
  -webkit-box-shadow: 0px 6px 10px -1px #adadad;
  box-shadow: 0px 6px 10px -1px #adadad;
  border-radius: 2px;
  position: absolute;
  z-index: 1000;
}
.ipython_tooltip a {
  float: right;
}
.ipython_tooltip .tooltiptext pre {
  border: 0;
  border-radius: 0;
  font-size: 100%;
  background-color: #f7f7f7;
}
.pretooltiparrow {
  left: 0px;
  margin: 0px;
  top: -16px;
  width: 40px;
  height: 16px;
  overflow: hidden;
  position: absolute;
}
.pretooltiparrow:before {
  background-color: #f7f7f7;
  border: 1px #ababab solid;
  z-index: 11;
  content: "";
  position: absolute;
  left: 15px;
  top: 10px;
  width: 25px;
  height: 25px;
  -webkit-transform: rotate(45deg);
  -moz-transform: rotate(45deg);
  -ms-transform: rotate(45deg);
  -o-transform: rotate(45deg);
}
ul.typeahead-list i {
  margin-left: -10px;
  width: 18px;
}
ul.typeahead-list {
  max-height: 80vh;
  overflow: auto;
}
ul.typeahead-list > li > a {
  /** Firefox bug **/
  /* see https://github.com/jupyter/notebook/issues/559 */
  white-space: normal;
}
.cmd-palette .modal-body {
  padding: 7px;
}
.cmd-palette form {
  background: white;
}
.cmd-palette input {
  outline: none;
}
.no-shortcut {
  display: none;
}
.command-shortcut:before {
  content: "(command)";
  padding-right: 3px;
  color: #777777;
}
.edit-shortcut:before {
  content: "(edit)";
  padding-right: 3px;
  color: #777777;
}
#find-and-replace #replace-preview .match,
#find-and-replace #replace-preview .insert {
  background-color: #BBDEFB;
  border-color: #90CAF9;
  border-style: solid;
  border-width: 1px;
  border-radius: 0px;
}
#find-and-replace #replace-preview .replace .match {
  background-color: #FFCDD2;
  border-color: #EF9A9A;
  border-radius: 0px;
}
#find-and-replace #replace-preview .replace .insert {
  background-color: #C8E6C9;
  border-color: #A5D6A7;
  border-radius: 0px;
}
#find-and-replace #replace-preview {
  max-height: 60vh;
  overflow: auto;
}
#find-and-replace #replace-preview pre {
  padding: 5px 10px;
}
.terminal-app {
  background: #EEE;
}
.terminal-app #header {
  background: #fff;
  -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
  box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
}
.terminal-app .terminal {
  float: left;
  font-family: monospace;
  color: white;
  background: black;
  padding: 0.4em;
  border-radius: 2px;
  -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.4);
  box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.4);
}
.terminal-app .terminal,
.terminal-app .terminal dummy-screen {
  line-height: 1em;
  font-size: 14px;
}
.terminal-app .terminal-cursor {
  color: black;
  background: white;
}
.terminal-app #terminado-container {
  margin-top: 20px;
}
/*# sourceMappingURL=style.min.css.map */
    </style>
<style type="text/css">
    .highlight .hll { background-color: #ffffcc }
.highlight  { background: #f8f8f8; }
.highlight .c { color: #408080; font-style: italic } /* Comment */
.highlight .err { border: 1px solid #FF0000 } /* Error */
.highlight .k { color: #008000; font-weight: bold } /* Keyword */
.highlight .o { color: #666666 } /* Operator */
.highlight .ch { color: #408080; font-style: italic } /* Comment.Hashbang */
.highlight .cm { color: #408080; font-style: italic } /* Comment.Multiline */
.highlight .cp { color: #BC7A00 } /* Comment.Preproc */
.highlight .cpf { color: #408080; font-style: italic } /* Comment.PreprocFile */
.highlight .c1 { color: #408080; font-style: italic } /* Comment.Single */
.highlight .cs { color: #408080; font-style: italic } /* Comment.Special */
.highlight .gd { color: #A00000 } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .gr { color: #FF0000 } /* Generic.Error */
.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
.highlight .gi { color: #00A000 } /* Generic.Inserted */
.highlight .go { color: #888888 } /* Generic.Output */
.highlight .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
.highlight .gt { color: #0044DD } /* Generic.Traceback */
.highlight .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #008000 } /* Keyword.Pseudo */
.highlight .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #B00040 } /* Keyword.Type */
.highlight .m { color: #666666 } /* Literal.Number */
.highlight .s { color: #BA2121 } /* Literal.String */
.highlight .na { color: #7D9029 } /* Name.Attribute */
.highlight .nb { color: #008000 } /* Name.Builtin */
.highlight .nc { color: #0000FF; font-weight: bold } /* Name.Class */
.highlight .no { color: #880000 } /* Name.Constant */
.highlight .nd { color: #AA22FF } /* Name.Decorator */
.highlight .ni { color: #999999; font-weight: bold } /* Name.Entity */
.highlight .ne { color: #D2413A; font-weight: bold } /* Name.Exception */
.highlight .nf { color: #0000FF } /* Name.Function */
.highlight .nl { color: #A0A000 } /* Name.Label */
.highlight .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
.highlight .nt { color: #008000; font-weight: bold } /* Name.Tag */
.highlight .nv { color: #19177C } /* Name.Variable */
.highlight .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
.highlight .mb { color: #666666 } /* Literal.Number.Bin */
.highlight .mf { color: #666666 } /* Literal.Number.Float */
.highlight .mh { color: #666666 } /* Literal.Number.Hex */
.highlight .mi { color: #666666 } /* Literal.Number.Integer */
.highlight .mo { color: #666666 } /* Literal.Number.Oct */
.highlight .sb { color: #BA2121 } /* Literal.String.Backtick */
.highlight .sc { color: #BA2121 } /* Literal.String.Char */
.highlight .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
.highlight .s2 { color: #BA2121 } /* Literal.String.Double */
.highlight .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */
.highlight .sh { color: #BA2121 } /* Literal.String.Heredoc */
.highlight .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */
.highlight .sx { color: #008000 } /* Literal.String.Other */
.highlight .sr { color: #BB6688 } /* Literal.String.Regex */
.highlight .s1 { color: #BA2121 } /* Literal.String.Single */
.highlight .ss { color: #19177C } /* Literal.String.Symbol */
.highlight .bp { color: #008000 } /* Name.Builtin.Pseudo */
.highlight .vc { color: #19177C } /* Name.Variable.Class */
.highlight .vg { color: #19177C } /* Name.Variable.Global */
.highlight .vi { color: #19177C } /* Name.Variable.Instance */
.highlight .il { color: #666666 } /* Literal.Number.Integer.Long */
    </style>
<style type="text/css">
    
/* Temporary definitions which will become obsolete with Notebook release 5.0 */
.ansi-black-fg { color: #3E424D; }
.ansi-black-bg { background-color: #3E424D; }
.ansi-black-intense-fg { color: #282C36; }
.ansi-black-intense-bg { background-color: #282C36; }
.ansi-red-fg { color: #E75C58; }
.ansi-red-bg { background-color: #E75C58; }
.ansi-red-intense-fg { color: #B22B31; }
.ansi-red-intense-bg { background-color: #B22B31; }
.ansi-green-fg { color: #00A250; }
.ansi-green-bg { background-color: #00A250; }
.ansi-green-intense-fg { color: #007427; }
.ansi-green-intense-bg { background-color: #007427; }
.ansi-yellow-fg { color: #DDB62B; }
.ansi-yellow-bg { background-color: #DDB62B; }
.ansi-yellow-intense-fg { color: #B27D12; }
.ansi-yellow-intense-bg { background-color: #B27D12; }
.ansi-blue-fg { color: #208FFB; }
.ansi-blue-bg { background-color: #208FFB; }
.ansi-blue-intense-fg { color: #0065CA; }
.ansi-blue-intense-bg { background-color: #0065CA; }
.ansi-magenta-fg { color: #D160C4; }
.ansi-magenta-bg { background-color: #D160C4; }
.ansi-magenta-intense-fg { color: #A03196; }
.ansi-magenta-intense-bg { background-color: #A03196; }
.ansi-cyan-fg { color: #60C6C8; }
.ansi-cyan-bg { background-color: #60C6C8; }
.ansi-cyan-intense-fg { color: #258F8F; }
.ansi-cyan-intense-bg { background-color: #258F8F; }
.ansi-white-fg { color: #C5C1B4; }
.ansi-white-bg { background-color: #C5C1B4; }
.ansi-white-intense-fg { color: #A1A6B2; }
.ansi-white-intense-bg { background-color: #A1A6B2; }

.ansi-bold { font-weight: bold; }

    </style>


<style type="text/css">
/* Overrides of notebook CSS for static HTML export */
body {
  overflow: visible;
  padding: 8px;
}

div#notebook {
  overflow: visible;
  border-top: none;
}

@media print {
  div.cell {
    display: block;
    page-break-inside: avoid;
  } 
  div.output_wrapper { 
    display: block;
    page-break-inside: avoid; 
  }
  div.output { 
    display: block;
    page-break-inside: avoid; 
  }
}
</style>

<!-- Custom stylesheet, it must be in the same directory as the html file -->
<link rel="stylesheet" href="custom.css">

<!-- Loading mathjax macro -->
<!-- Load mathjax -->
    <script src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS_HTML"></script>
    <!-- MathJax configuration -->
    <script type="text/x-mathjax-config">
    MathJax.Hub.Config({
        tex2jax: {
            inlineMath: [ ['$','$'], ["\\(","\\)"] ],
            displayMath: [ ['$$','$$'], ["\\[","\\]"] ],
            processEscapes: true,
            processEnvironments: true
        },
        // Center justify equations in code and markdown cells. Elsewhere
        // we use CSS to left justify single line equations in code cells.
        displayAlign: 'center',
        "HTML-CSS": {
            styles: {'.MathJax_Display': {"margin": 0}},
            linebreaks: { automatic: true }
        }
    });
    </script>
    <!-- End of mathjax configuration --></head>
<body>
  <div tabindex="-1" id="notebook" class="border-box-sizing">
    <div class="container" id="notebook-container">

<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="Intro---Perceptrons">Intro - Perceptrons<a class="anchor-link" href="#Intro---Perceptrons">&#182;</a></h3><ul>
<li>Simplest ANN architecture</li>
<li>Uses <em>linear threshold unit (LTU)</em> - returns weight sum of inputs, applies <em>step function</em> to sum, outputs result</li>
<li>Single LTU can be used for simple linear binary classification</li>
<li>Perceptron = single layer of LTUs, each one connected to all inputs</li>
<li>Percepton training based on <em>Hebb's Rule</em>. (basically, connection weight between two neurons goes up when they have same output.)</li>
<li>Linear decision boundary, so Perceptrons not capable of learning complex patterns.</li>
</ul>

</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[1]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># Perceptron with Iris dataset (Scikit)</span>

<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>

<span class="kn">from</span> <span class="nn">sklearn.datasets</span> <span class="k">import</span> <span class="n">load_iris</span>
<span class="n">iris</span> <span class="o">=</span> <span class="n">load_iris</span><span class="p">()</span>

<span class="n">X</span> <span class="o">=</span> <span class="n">iris</span><span class="o">.</span><span class="n">data</span><span class="p">[:,</span> <span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">)]</span>  <span class="c1"># petal length, petal width</span>
<span class="n">y</span> <span class="o">=</span> <span class="p">(</span><span class="n">iris</span><span class="o">.</span><span class="n">target</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span><span class="o">.</span><span class="n">astype</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">int</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[2]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="kn">from</span> <span class="nn">sklearn.linear_model</span> <span class="k">import</span> <span class="n">Perceptron</span>

<span class="n">per_clf</span> <span class="o">=</span> <span class="n">Perceptron</span><span class="p">(</span><span class="n">random_state</span><span class="o">=</span><span class="mi">42</span><span class="p">)</span>
<span class="n">per_clf</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">X</span><span class="p">,</span> <span class="n">y</span><span class="p">)</span>

<span class="n">y_pred</span> <span class="o">=</span> <span class="n">per_clf</span><span class="o">.</span><span class="n">predict</span><span class="p">([[</span><span class="mi">2</span><span class="p">,</span> <span class="mf">0.5</span><span class="p">]])</span>
<span class="nb">print</span><span class="p">(</span><span class="n">y_pred</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area"><div class="prompt"></div>
<div class="output_subarea output_stream output_stdout output_text">
<pre>[1]
</pre>
</div>
</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<ul>
<li>Perceptron learning algo very similar go SGD.</li>
<li>Perceptrons do provide class probability (like Logistic Regression classsifier). They simply make predictions based on hard threshold.</li>
<li>Some limitations can be eliminated with stacked Perceptrons.</li>
</ul>

</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[3]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>

<span class="n">a</span> <span class="o">=</span> <span class="o">-</span><span class="n">per_clf</span><span class="o">.</span><span class="n">coef_</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="o">/</span> <span class="n">per_clf</span><span class="o">.</span><span class="n">coef_</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">1</span><span class="p">]</span>
<span class="n">b</span> <span class="o">=</span> <span class="o">-</span><span class="n">per_clf</span><span class="o">.</span><span class="n">intercept_</span> <span class="o">/</span> <span class="n">per_clf</span><span class="o">.</span><span class="n">coef_</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">1</span><span class="p">]</span>

<span class="n">axes</span> <span class="o">=</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">5</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">2</span><span class="p">]</span>

<span class="n">x0</span><span class="p">,</span> <span class="n">x1</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">meshgrid</span><span class="p">(</span>
        <span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="n">axes</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">axes</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="mi">500</span><span class="p">)</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">),</span>
        <span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="n">axes</span><span class="p">[</span><span class="mi">2</span><span class="p">],</span> <span class="n">axes</span><span class="p">[</span><span class="mi">3</span><span class="p">],</span> <span class="mi">200</span><span class="p">)</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">),</span>
    <span class="p">)</span>

<span class="n">X_new</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">c_</span><span class="p">[</span>
    <span class="n">x0</span><span class="o">.</span><span class="n">ravel</span><span class="p">(),</span> 
    <span class="n">x1</span><span class="o">.</span><span class="n">ravel</span><span class="p">()]</span>

<span class="n">y_predict</span> <span class="o">=</span> <span class="n">per_clf</span><span class="o">.</span><span class="n">predict</span><span class="p">(</span><span class="n">X_new</span><span class="p">)</span>

<span class="n">zz</span> <span class="o">=</span> <span class="n">y_predict</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="n">x0</span><span class="o">.</span><span class="n">shape</span><span class="p">)</span>

<span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">(</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span> <span class="mi">4</span><span class="p">))</span>
<span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">X</span><span class="p">[</span><span class="n">y</span><span class="o">==</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">],</span> <span class="n">X</span><span class="p">[</span><span class="n">y</span><span class="o">==</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">],</span> <span class="s2">&quot;bs&quot;</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="s2">&quot;Not Iris-Setosa&quot;</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">X</span><span class="p">[</span><span class="n">y</span><span class="o">==</span><span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">],</span> <span class="n">X</span><span class="p">[</span><span class="n">y</span><span class="o">==</span><span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">],</span> <span class="s2">&quot;yo&quot;</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="s2">&quot;Iris-Setosa&quot;</span><span class="p">)</span>

<span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span>
    <span class="p">[</span><span class="n">axes</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> 
     <span class="n">axes</span><span class="p">[</span><span class="mi">1</span><span class="p">]],</span> 
    <span class="p">[</span><span class="n">a</span> <span class="o">*</span> <span class="n">axes</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">+</span> <span class="n">b</span><span class="p">,</span> 
     <span class="n">a</span> <span class="o">*</span> <span class="n">axes</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">+</span> <span class="n">b</span><span class="p">],</span> 
    <span class="s2">&quot;k-&quot;</span><span class="p">,</span> <span class="n">linewidth</span><span class="o">=</span><span class="mi">3</span><span class="p">)</span>

<span class="kn">from</span> <span class="nn">matplotlib.colors</span> <span class="k">import</span> <span class="n">ListedColormap</span>
<span class="n">custom_cmap</span> <span class="o">=</span> <span class="n">ListedColormap</span><span class="p">([</span><span class="s1">&#39;#9898ff&#39;</span><span class="p">,</span> <span class="s1">&#39;#fafab0&#39;</span><span class="p">])</span>

<span class="n">plt</span><span class="o">.</span><span class="n">contourf</span><span class="p">(</span><span class="n">x0</span><span class="p">,</span> <span class="n">x1</span><span class="p">,</span> <span class="n">zz</span><span class="p">,</span> <span class="n">cmap</span><span class="o">=</span><span class="n">custom_cmap</span><span class="p">,</span> <span class="n">linewidth</span><span class="o">=</span><span class="mi">5</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">xlabel</span><span class="p">(</span><span class="s2">&quot;Petal length&quot;</span><span class="p">,</span> <span class="n">fontsize</span><span class="o">=</span><span class="mi">14</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">ylabel</span><span class="p">(</span><span class="s2">&quot;Petal width&quot;</span><span class="p">,</span> <span class="n">fontsize</span><span class="o">=</span><span class="mi">14</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">legend</span><span class="p">(</span><span class="n">loc</span><span class="o">=</span><span class="s2">&quot;lower right&quot;</span><span class="p">,</span> <span class="n">fontsize</span><span class="o">=</span><span class="mi">14</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">axis</span><span class="p">(</span><span class="n">axes</span><span class="p">)</span>

<span class="c1">#save_fig(&quot;perceptron_iris_plot&quot;)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area"><div class="prompt"></div>


<div class="output_png output_subarea ">
<img src="
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
AElFTkSuQmCC
"
>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="MLPs-and-Backpropagation">MLPs and Backpropagation<a class="anchor-link" href="#MLPs-and-Backpropagation">&#182;</a></h3><ul>
<li>MLP contains one input layer, at least one hidden layer (LTU based), and one output layer (LTU based).</li>
<li>Backpropagation intro'd in <a href="https://goo.gl/Wl7Xyc">1986 paper</a>. Can be described as Gradient Descent using reverse-mode autodiff.</li>
<li>For each training instance:<ul>
<li>Find output of each node in each consecutive layer (forward pass).</li>
<li>Measure output error &amp; how much each node in last hidden layer contributed to it.</li>
<li>Measure how much each node in <em>previous</em> hidden layer contributed to <em>this</em> hidden layer.</li>
<li>Repeat until <em>input</em> layer is reached (backward pass).</li>
<li>Adjust each connection weight to reduce the error.</li>
</ul>
</li>
<li>To make algorithm work, MLP architecture changed to use logistic function delta(z) = 1/(1+exp(-z)) instead of step function.</li>
<li>Backpropagation can also use hyperbolic tangent or ReLU functions if desired.</li>
</ul>

</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[4]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># Activation functions</span>

<span class="k">def</span> <span class="nf">logit</span><span class="p">(</span><span class="n">z</span><span class="p">):</span>
    <span class="k">return</span> <span class="mi">1</span> <span class="o">/</span> <span class="p">(</span><span class="mi">1</span> <span class="o">+</span> <span class="n">np</span><span class="o">.</span><span class="n">exp</span><span class="p">(</span><span class="o">-</span><span class="n">z</span><span class="p">))</span>

<span class="k">def</span> <span class="nf">relu</span><span class="p">(</span><span class="n">z</span><span class="p">):</span>
    <span class="k">return</span> <span class="n">np</span><span class="o">.</span><span class="n">maximum</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">z</span><span class="p">)</span>

<span class="k">def</span> <span class="nf">derivative</span><span class="p">(</span><span class="n">f</span><span class="p">,</span> <span class="n">z</span><span class="p">,</span> <span class="n">eps</span><span class="o">=</span><span class="mf">0.000001</span><span class="p">):</span>
    <span class="k">return</span> <span class="p">(</span><span class="n">f</span><span class="p">(</span><span class="n">z</span> <span class="o">+</span> <span class="n">eps</span><span class="p">)</span> <span class="o">-</span> <span class="n">f</span><span class="p">(</span><span class="n">z</span> <span class="o">-</span> <span class="n">eps</span><span class="p">))</span><span class="o">/</span><span class="p">(</span><span class="mi">2</span> <span class="o">*</span> <span class="n">eps</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[5]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">z</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="o">-</span><span class="mi">5</span><span class="p">,</span> <span class="mi">5</span><span class="p">,</span> <span class="mi">200</span><span class="p">)</span>

<span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">(</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">11</span><span class="p">,</span><span class="mi">4</span><span class="p">))</span>

<span class="n">plt</span><span class="o">.</span><span class="n">subplot</span><span class="p">(</span><span class="mi">121</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">z</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">sign</span><span class="p">(</span><span class="n">z</span><span class="p">),</span> <span class="s2">&quot;r-&quot;</span><span class="p">,</span> <span class="n">linewidth</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="s2">&quot;Step&quot;</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">z</span><span class="p">,</span> <span class="n">logit</span><span class="p">(</span><span class="n">z</span><span class="p">),</span> <span class="s2">&quot;g--&quot;</span><span class="p">,</span> <span class="n">linewidth</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="s2">&quot;Logit&quot;</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">z</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">tanh</span><span class="p">(</span><span class="n">z</span><span class="p">),</span> <span class="s2">&quot;b-&quot;</span><span class="p">,</span> <span class="n">linewidth</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="s2">&quot;Tanh&quot;</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">z</span><span class="p">,</span> <span class="n">relu</span><span class="p">(</span><span class="n">z</span><span class="p">),</span> <span class="s2">&quot;m-.&quot;</span><span class="p">,</span> <span class="n">linewidth</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="s2">&quot;ReLU&quot;</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">legend</span><span class="p">(</span><span class="n">loc</span><span class="o">=</span><span class="s2">&quot;center right&quot;</span><span class="p">,</span> <span class="n">fontsize</span><span class="o">=</span><span class="mi">14</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">title</span><span class="p">(</span><span class="s2">&quot;Activation functions&quot;</span><span class="p">,</span> <span class="n">fontsize</span><span class="o">=</span><span class="mi">14</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">axis</span><span class="p">([</span><span class="o">-</span><span class="mi">5</span><span class="p">,</span> <span class="mi">5</span><span class="p">,</span> <span class="o">-</span><span class="mf">1.2</span><span class="p">,</span> <span class="mf">1.2</span><span class="p">])</span>

<span class="n">plt</span><span class="o">.</span><span class="n">subplot</span><span class="p">(</span><span class="mi">122</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">z</span><span class="p">,</span> <span class="n">derivative</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">sign</span><span class="p">,</span> <span class="n">z</span><span class="p">),</span> <span class="s2">&quot;r-&quot;</span><span class="p">,</span> <span class="n">linewidth</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="s2">&quot;Step&quot;</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="s2">&quot;ro&quot;</span><span class="p">,</span> <span class="n">markersize</span><span class="o">=</span><span class="mi">5</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="s2">&quot;rx&quot;</span><span class="p">,</span> <span class="n">markersize</span><span class="o">=</span><span class="mi">10</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">z</span><span class="p">,</span> <span class="n">derivative</span><span class="p">(</span><span class="n">logit</span><span class="p">,</span> <span class="n">z</span><span class="p">),</span> <span class="s2">&quot;g--&quot;</span><span class="p">,</span> <span class="n">linewidth</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="s2">&quot;Logit&quot;</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">z</span><span class="p">,</span> <span class="n">derivative</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">tanh</span><span class="p">,</span> <span class="n">z</span><span class="p">),</span> <span class="s2">&quot;b-&quot;</span><span class="p">,</span> <span class="n">linewidth</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="s2">&quot;Tanh&quot;</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">z</span><span class="p">,</span> <span class="n">derivative</span><span class="p">(</span><span class="n">relu</span><span class="p">,</span> <span class="n">z</span><span class="p">),</span> <span class="s2">&quot;m-.&quot;</span><span class="p">,</span> <span class="n">linewidth</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="s2">&quot;ReLU&quot;</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
<span class="c1">#plt.legend(loc=&quot;center right&quot;, fontsize=14)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">title</span><span class="p">(</span><span class="s2">&quot;Derivatives&quot;</span><span class="p">,</span> <span class="n">fontsize</span><span class="o">=</span><span class="mi">14</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">axis</span><span class="p">([</span><span class="o">-</span><span class="mi">5</span><span class="p">,</span> <span class="mi">5</span><span class="p">,</span> <span class="o">-</span><span class="mf">0.2</span><span class="p">,</span> <span class="mf">1.2</span><span class="p">])</span>

<span class="c1">#save_fig(&quot;activation_functions_plot&quot;)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area"><div class="prompt"></div>


<div class="output_png output_subarea ">
<img src="
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
AAAASUVORK5CYII=
"
>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[6]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># activation functions, continued</span>
<span class="k">def</span> <span class="nf">heaviside</span><span class="p">(</span><span class="n">z</span><span class="p">):</span>
    <span class="k">return</span> <span class="p">(</span><span class="n">z</span> <span class="o">&gt;=</span> <span class="mi">0</span><span class="p">)</span><span class="o">.</span><span class="n">astype</span><span class="p">(</span><span class="n">z</span><span class="o">.</span><span class="n">dtype</span><span class="p">)</span>

<span class="k">def</span> <span class="nf">sigmoid</span><span class="p">(</span><span class="n">z</span><span class="p">):</span>
    <span class="k">return</span> <span class="mi">1</span><span class="o">/</span><span class="p">(</span><span class="mi">1</span><span class="o">+</span><span class="n">np</span><span class="o">.</span><span class="n">exp</span><span class="p">(</span><span class="o">-</span><span class="n">z</span><span class="p">))</span>

<span class="k">def</span> <span class="nf">mlp_xor</span><span class="p">(</span><span class="n">x1</span><span class="p">,</span> <span class="n">x2</span><span class="p">,</span> <span class="n">activation</span><span class="o">=</span><span class="n">heaviside</span><span class="p">):</span>
    <span class="k">return</span> <span class="n">activation</span><span class="p">(</span>
        <span class="o">-</span><span class="n">activation</span><span class="p">(</span><span class="n">x1</span> <span class="o">+</span> <span class="n">x2</span> <span class="o">-</span> <span class="mf">1.5</span><span class="p">)</span> <span class="o">+</span> <span class="n">activation</span><span class="p">(</span><span class="n">x1</span> <span class="o">+</span> <span class="n">x2</span> <span class="o">-</span> <span class="mf">0.5</span><span class="p">)</span> <span class="o">-</span> <span class="mf">0.5</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[7]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">x1s</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="o">-</span><span class="mf">0.2</span><span class="p">,</span> <span class="mf">1.2</span><span class="p">,</span> <span class="mi">100</span><span class="p">)</span>
<span class="n">x2s</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="o">-</span><span class="mf">0.2</span><span class="p">,</span> <span class="mf">1.2</span><span class="p">,</span> <span class="mi">100</span><span class="p">)</span>
<span class="n">x1</span><span class="p">,</span> <span class="n">x2</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">meshgrid</span><span class="p">(</span><span class="n">x1s</span><span class="p">,</span> <span class="n">x2s</span><span class="p">)</span>

<span class="n">z1</span> <span class="o">=</span> <span class="n">mlp_xor</span><span class="p">(</span><span class="n">x1</span><span class="p">,</span> <span class="n">x2</span><span class="p">,</span> <span class="n">activation</span><span class="o">=</span><span class="n">heaviside</span><span class="p">)</span>
<span class="n">z2</span> <span class="o">=</span> <span class="n">mlp_xor</span><span class="p">(</span><span class="n">x1</span><span class="p">,</span> <span class="n">x2</span><span class="p">,</span> <span class="n">activation</span><span class="o">=</span><span class="n">sigmoid</span><span class="p">)</span>

<span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">(</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span><span class="mi">4</span><span class="p">))</span>

<span class="n">plt</span><span class="o">.</span><span class="n">subplot</span><span class="p">(</span><span class="mi">121</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">contourf</span><span class="p">(</span><span class="n">x1</span><span class="p">,</span> <span class="n">x2</span><span class="p">,</span> <span class="n">z1</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">([</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">],</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">],</span> <span class="s2">&quot;gs&quot;</span><span class="p">,</span> <span class="n">markersize</span><span class="o">=</span><span class="mi">20</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">([</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">],</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">],</span> <span class="s2">&quot;y^&quot;</span><span class="p">,</span> <span class="n">markersize</span><span class="o">=</span><span class="mi">20</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">title</span><span class="p">(</span><span class="s2">&quot;Activation function: heaviside&quot;</span><span class="p">,</span> <span class="n">fontsize</span><span class="o">=</span><span class="mi">14</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>

<span class="n">plt</span><span class="o">.</span><span class="n">subplot</span><span class="p">(</span><span class="mi">122</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">contourf</span><span class="p">(</span><span class="n">x1</span><span class="p">,</span> <span class="n">x2</span><span class="p">,</span> <span class="n">z2</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">([</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">],</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">],</span> <span class="s2">&quot;gs&quot;</span><span class="p">,</span> <span class="n">markersize</span><span class="o">=</span><span class="mi">20</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">([</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">],</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">],</span> <span class="s2">&quot;y^&quot;</span><span class="p">,</span> <span class="n">markersize</span><span class="o">=</span><span class="mi">20</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">title</span><span class="p">(</span><span class="s2">&quot;Activation function: sigmoid&quot;</span><span class="p">,</span> <span class="n">fontsize</span><span class="o">=</span><span class="mi">14</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area"><div class="prompt"></div>


<div class="output_png output_subarea ">
<img src="
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
"
>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="MLP-Training">MLP Training<a class="anchor-link" href="#MLP-Training">&#182;</a></h3><ul>
<li>MLP often used for classification - each output corresponding to distinct binary class (ex: urgent/not-urgent, spam/not-spam, ...)</li>
<li>If exclusive classes, output layer often uses shared <strong>softmax</strong> function.</li>
</ul>

</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="DNN-Training-with-&quot;plain&quot;-TF">DNN Training with "plain" TF<a class="anchor-link" href="#DNN-Training-with-&quot;plain&quot;-TF">&#182;</a></h3><ul>
<li>Use <strong>mini-batch gradient descent</strong> on MNIST dataset</li>
<li>Specify #inputs, #outputs, #hidden neurons in each layer</li>
</ul>

</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[18]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="kn">import</span> <span class="nn">tensorflow</span> <span class="k">as</span> <span class="nn">tf</span>

<span class="n">tf</span><span class="o">.</span><span class="n">reset_default_graph</span><span class="p">()</span>

<span class="n">n_inputs</span> <span class="o">=</span> <span class="mi">28</span><span class="o">*</span><span class="mi">28</span>  <span class="c1"># MNIST</span>
<span class="n">n_hidden1</span> <span class="o">=</span> <span class="mi">300</span>
<span class="n">n_hidden2</span> <span class="o">=</span> <span class="mi">100</span>
<span class="n">n_outputs</span> <span class="o">=</span> <span class="mi">10</span>
<span class="n">learning_rate</span> <span class="o">=</span> <span class="mf">0.01</span>

<span class="c1"># placeholders for training data &amp; targets</span>
<span class="c1"># X,y only partially defined due to unknown #instances in training batches</span>

<span class="n">X</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">placeholder</span><span class="p">(</span><span class="n">tf</span><span class="o">.</span><span class="n">float32</span><span class="p">,</span> <span class="n">shape</span><span class="o">=</span><span class="p">(</span><span class="kc">None</span><span class="p">,</span> <span class="n">n_inputs</span><span class="p">),</span> <span class="n">name</span><span class="o">=</span><span class="s2">&quot;X&quot;</span><span class="p">)</span>
<span class="n">y</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">placeholder</span><span class="p">(</span><span class="n">tf</span><span class="o">.</span><span class="n">int64</span><span class="p">,</span>   <span class="n">shape</span><span class="o">=</span><span class="p">(</span><span class="kc">None</span><span class="p">),</span>           <span class="n">name</span><span class="o">=</span><span class="s2">&quot;y&quot;</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[20]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># now need to create two hidden layers + one output layer</span>

<span class="sd">&#39;&#39;&#39;</span>
<span class="sd">No need to define your own. TF shortcuts:</span>
<span class="sd">fully_connected()</span>
<span class="sd">&#39;&#39;&#39;</span>

<span class="k">def</span> <span class="nf">neuron_layer</span><span class="p">(</span><span class="n">X</span><span class="p">,</span> <span class="n">n_neurons</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">activation</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
    
    <span class="c1"># define a name scope to aid readability</span>
    <span class="k">with</span> <span class="n">tf</span><span class="o">.</span><span class="n">name_scope</span><span class="p">(</span><span class="n">name</span><span class="p">):</span>
        
        <span class="n">n_inputs</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">X</span><span class="o">.</span><span class="n">get_shape</span><span class="p">()[</span><span class="mi">1</span><span class="p">])</span>
        
        <span class="c1"># create weights matrix. 2D (#inputs, #neurons)</span>
        <span class="c1"># randomly initialized w/ truncated Gaussian, stdev = 2/sqrt(#inputs)</span>
        <span class="c1"># aids convergence speed</span>
        
        <span class="n">stddev</span> <span class="o">=</span> <span class="mi">1</span> <span class="o">/</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">n_inputs</span><span class="p">)</span>
        <span class="n">init</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">truncated_normal</span><span class="p">((</span><span class="n">n_inputs</span><span class="p">,</span> <span class="n">n_neurons</span><span class="p">),</span> <span class="n">stddev</span><span class="o">=</span><span class="n">stddev</span><span class="p">)</span>       
        <span class="n">W</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">Variable</span><span class="p">(</span><span class="n">init</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="s2">&quot;weights&quot;</span><span class="p">)</span>
        
        <span class="c1"># create bias variable, initialized to zero, one param per neuron</span>
        <span class="n">b</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">Variable</span><span class="p">(</span><span class="n">tf</span><span class="o">.</span><span class="n">zeros</span><span class="p">([</span><span class="n">n_neurons</span><span class="p">]),</span> <span class="n">name</span><span class="o">=</span><span class="s2">&quot;biases&quot;</span><span class="p">)</span>
        
        <span class="c1"># Z = X dot W + b</span>
        <span class="n">Z</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">matmul</span><span class="p">(</span><span class="n">X</span><span class="p">,</span> <span class="n">W</span><span class="p">)</span> <span class="o">+</span> <span class="n">b</span>
        
        <span class="c1"># return relu(z), or simply z</span>
        <span class="k">if</span> <span class="n">activation</span><span class="o">==</span><span class="s2">&quot;relu&quot;</span><span class="p">:</span>
            <span class="k">return</span> <span class="n">tf</span><span class="o">.</span><span class="n">nn</span><span class="o">.</span><span class="n">relu</span><span class="p">(</span><span class="n">Z</span><span class="p">)</span>
        <span class="k">else</span><span class="p">:</span>
            <span class="k">return</span> <span class="n">Z</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[22]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="k">with</span> <span class="n">tf</span><span class="o">.</span><span class="n">name_scope</span><span class="p">(</span><span class="s2">&quot;dnn&quot;</span><span class="p">):</span>
    <span class="n">hidden1</span> <span class="o">=</span> <span class="n">neuron_layer</span><span class="p">(</span><span class="n">X</span><span class="p">,</span>       <span class="n">n_hidden1</span><span class="p">,</span> <span class="s2">&quot;hidden1&quot;</span><span class="p">,</span> <span class="n">activation</span><span class="o">=</span><span class="s2">&quot;relu&quot;</span><span class="p">)</span>
    <span class="n">hidden2</span> <span class="o">=</span> <span class="n">neuron_layer</span><span class="p">(</span><span class="n">hidden1</span><span class="p">,</span> <span class="n">n_hidden2</span><span class="p">,</span> <span class="s2">&quot;hidden2&quot;</span><span class="p">,</span> <span class="n">activation</span><span class="o">=</span><span class="s2">&quot;relu&quot;</span><span class="p">)</span>
    
    <span class="c1"># logits = NN output before going thru softmax activation</span>
    <span class="n">logits</span> <span class="o">=</span>  <span class="n">neuron_layer</span><span class="p">(</span><span class="n">hidden2</span><span class="p">,</span> <span class="n">n_outputs</span><span class="p">,</span> <span class="s2">&quot;output&quot;</span><span class="p">)</span>

<span class="k">with</span> <span class="n">tf</span><span class="o">.</span><span class="n">name_scope</span><span class="p">(</span><span class="s2">&quot;loss&quot;</span><span class="p">):</span>
    
    <span class="c1"># sparse_softmax_cross_entropy_with_logits() -- TF routine, handles corner cases for you.</span>
    <span class="n">xentropy</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">nn</span><span class="o">.</span><span class="n">sparse_softmax_cross_entropy_with_logits</span><span class="p">(</span>
        <span class="n">labels</span><span class="o">=</span><span class="n">y</span><span class="p">,</span> 
        <span class="n">logits</span><span class="o">=</span><span class="n">logits</span><span class="p">)</span>
    
    <span class="c1"># use reduce_mean() to find mean cross-entropy over all instances.</span>
    <span class="n">loss</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">reduce_mean</span><span class="p">(</span>
        <span class="n">xentropy</span><span class="p">,</span> 
        <span class="n">name</span><span class="o">=</span><span class="s2">&quot;loss&quot;</span><span class="p">)</span>

<span class="c1"># use GD to handle cost function, ie minimize loss</span>
<span class="k">with</span> <span class="n">tf</span><span class="o">.</span><span class="n">name_scope</span><span class="p">(</span><span class="s2">&quot;train&quot;</span><span class="p">):</span>
    <span class="n">optimizer</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">train</span><span class="o">.</span><span class="n">GradientDescentOptimizer</span><span class="p">(</span><span class="n">learning_rate</span><span class="p">)</span>
    <span class="n">training_op</span> <span class="o">=</span> <span class="n">optimizer</span><span class="o">.</span><span class="n">minimize</span><span class="p">(</span><span class="n">loss</span><span class="p">)</span>

<span class="c1"># use accuracy as performance measure.</span>

<span class="k">with</span> <span class="n">tf</span><span class="o">.</span><span class="n">name_scope</span><span class="p">(</span><span class="s2">&quot;eval&quot;</span><span class="p">):</span>        <span class="c1"># verify whether highest logit corresponds to target class</span>
    <span class="n">correct</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">nn</span><span class="o">.</span><span class="n">in_top_k</span><span class="p">(</span>      <span class="c1"># using in_top_k(), returns 1D tensor of booleans</span>
        <span class="n">logits</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
    
    <span class="n">accuracy</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">reduce_mean</span><span class="p">(</span>             <span class="c1"># recast booleans to float &amp; find avg.</span>
        <span class="n">tf</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">correct</span><span class="p">,</span> <span class="n">tf</span><span class="o">.</span><span class="n">float32</span><span class="p">))</span>      <span class="c1"># this gives overall accuracy number.</span>

<span class="n">init</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">global_variables_initializer</span><span class="p">()</span>   <span class="c1"># initializer node</span>
<span class="n">saver</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">train</span><span class="o">.</span><span class="n">Saver</span><span class="p">()</span>                   <span class="c1"># to save trained params to disk</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="Execution-Phase">Execution Phase<a class="anchor-link" href="#Execution-Phase">&#182;</a></h3><ul>
<li>Load MNIST using TF helpers (fetch, auto-scale, shuffle, provide minibatch function)</li>
</ul>

</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[25]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># load MNIST</span>

<span class="kn">from</span> <span class="nn">tensorflow.examples.tutorials.mnist</span> <span class="k">import</span> <span class="n">input_data</span>
<span class="n">mnist</span> <span class="o">=</span> <span class="n">input_data</span><span class="o">.</span><span class="n">read_data_sets</span><span class="p">(</span><span class="s2">&quot;/tmp/data/&quot;</span><span class="p">)</span>

<span class="n">n_epochs</span> <span class="o">=</span> <span class="mi">20</span>
<span class="n">batch_size</span> <span class="o">=</span> <span class="mi">50</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area"><div class="prompt"></div>
<div class="output_subarea output_stream output_stdout output_text">
<pre>Extracting /tmp/data/train-images-idx3-ubyte.gz
Extracting /tmp/data/train-labels-idx1-ubyte.gz
Extracting /tmp/data/t10k-images-idx3-ubyte.gz
Extracting /tmp/data/t10k-labels-idx1-ubyte.gz
</pre>
</div>
</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[26]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># Train</span>
<span class="k">with</span> <span class="n">tf</span><span class="o">.</span><span class="n">Session</span><span class="p">()</span> <span class="k">as</span> <span class="n">sess</span><span class="p">:</span>

    <span class="n">init</span><span class="o">.</span><span class="n">run</span><span class="p">()</span> <span class="c1"># initialize all variables</span>
    
    <span class="k">for</span> <span class="n">epoch</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">n_epochs</span><span class="p">):</span>
        <span class="k">for</span> <span class="n">iteration</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">mnist</span><span class="o">.</span><span class="n">train</span><span class="o">.</span><span class="n">num_examples</span> <span class="o">//</span> <span class="n">batch_size</span><span class="p">):</span>

            <span class="c1"># use next_batch() to fetch data</span>
            <span class="n">X_batch</span><span class="p">,</span> <span class="n">y_batch</span> <span class="o">=</span> <span class="n">mnist</span><span class="o">.</span><span class="n">train</span><span class="o">.</span><span class="n">next_batch</span><span class="p">(</span><span class="n">batch_size</span><span class="p">)</span>

            <span class="n">sess</span><span class="o">.</span><span class="n">run</span><span class="p">(</span>
                <span class="n">training_op</span><span class="p">,</span> 
                <span class="n">feed_dict</span><span class="o">=</span><span class="p">{</span><span class="n">X</span><span class="p">:</span> <span class="n">X_batch</span><span class="p">,</span> <span class="n">y</span><span class="p">:</span> <span class="n">y_batch</span><span class="p">})</span>

        <span class="n">acc_train</span> <span class="o">=</span> <span class="n">accuracy</span><span class="o">.</span><span class="n">eval</span><span class="p">(</span>
            <span class="n">feed_dict</span><span class="o">=</span><span class="p">{</span><span class="n">X</span><span class="p">:</span> <span class="n">X_batch</span><span class="p">,</span> <span class="n">y</span><span class="p">:</span> <span class="n">y_batch</span><span class="p">})</span>

        <span class="n">acc_test</span> <span class="o">=</span> <span class="n">accuracy</span><span class="o">.</span><span class="n">eval</span><span class="p">(</span>
            <span class="n">feed_dict</span><span class="o">=</span><span class="p">{</span><span class="n">X</span><span class="p">:</span> <span class="n">mnist</span><span class="o">.</span><span class="n">test</span><span class="o">.</span><span class="n">images</span><span class="p">,</span>
                       <span class="n">y</span><span class="p">:</span> <span class="n">mnist</span><span class="o">.</span><span class="n">test</span><span class="o">.</span><span class="n">labels</span><span class="p">})</span>

        <span class="nb">print</span><span class="p">(</span><span class="n">epoch</span><span class="p">,</span> <span class="s2">&quot;Train accuracy:&quot;</span><span class="p">,</span> <span class="n">acc_train</span><span class="p">,</span> <span class="s2">&quot;Test accuracy:&quot;</span><span class="p">,</span> <span class="n">acc_test</span><span class="p">)</span>

        <span class="n">save_path</span> <span class="o">=</span> <span class="n">saver</span><span class="o">.</span><span class="n">save</span><span class="p">(</span><span class="n">sess</span><span class="p">,</span> <span class="s2">&quot;./my_model_final.ckpt&quot;</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area"><div class="prompt"></div>
<div class="output_subarea output_stream output_stdout output_text">
<pre>0 Train accuracy: 0.94 Test accuracy: 0.8753
1 Train accuracy: 0.9 Test accuracy: 0.9087
2 Train accuracy: 0.94 Test accuracy: 0.9212
3 Train accuracy: 0.88 Test accuracy: 0.9239
4 Train accuracy: 0.88 Test accuracy: 0.9335
5 Train accuracy: 0.96 Test accuracy: 0.9365
6 Train accuracy: 0.92 Test accuracy: 0.9415
7 Train accuracy: 0.94 Test accuracy: 0.9449
8 Train accuracy: 0.96 Test accuracy: 0.9459
9 Train accuracy: 0.94 Test accuracy: 0.9497
10 Train accuracy: 1.0 Test accuracy: 0.9539
11 Train accuracy: 0.94 Test accuracy: 0.9563
12 Train accuracy: 0.98 Test accuracy: 0.958
13 Train accuracy: 0.98 Test accuracy: 0.9584
14 Train accuracy: 0.94 Test accuracy: 0.9614
15 Train accuracy: 1.0 Test accuracy: 0.9622
16 Train accuracy: 0.96 Test accuracy: 0.9639
17 Train accuracy: 0.92 Test accuracy: 0.9635
18 Train accuracy: 0.98 Test accuracy: 0.9654
19 Train accuracy: 0.92 Test accuracy: 0.9667
</pre>
</div>
</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="Using-in-production">Using in production<a class="anchor-link" href="#Using-in-production">&#182;</a></h3><ul>
<li>Now trained - you can use the NN to predict.</li>
</ul>

</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[27]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="k">with</span> <span class="n">tf</span><span class="o">.</span><span class="n">Session</span><span class="p">()</span> <span class="k">as</span> <span class="n">sess</span><span class="p">:</span>

    <span class="c1"># load from disk</span>
    <span class="n">saver</span><span class="o">.</span><span class="n">restore</span><span class="p">(</span><span class="n">sess</span><span class="p">,</span> <span class="n">save_path</span><span class="p">)</span> <span class="c1">#&quot;my_model_final.ckpt&quot;)</span>
    
    <span class="c1"># grab images you want to classify</span>
    <span class="n">X_new_scaled</span> <span class="o">=</span> <span class="n">mnist</span><span class="o">.</span><span class="n">test</span><span class="o">.</span><span class="n">images</span><span class="p">[:</span><span class="mi">20</span><span class="p">]</span>
    
    <span class="n">Z</span> <span class="o">=</span> <span class="n">logits</span><span class="o">.</span><span class="n">eval</span><span class="p">(</span><span class="n">feed_dict</span><span class="o">=</span><span class="p">{</span><span class="n">X</span><span class="p">:</span> <span class="n">X_new_scaled</span><span class="p">})</span>
    <span class="nb">print</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">argmax</span><span class="p">(</span><span class="n">Z</span><span class="p">,</span> <span class="n">axis</span><span class="o">=</span><span class="mi">1</span><span class="p">))</span>
    <span class="nb">print</span><span class="p">(</span><span class="n">mnist</span><span class="o">.</span><span class="n">test</span><span class="o">.</span><span class="n">labels</span><span class="p">[:</span><span class="mi">20</span><span class="p">])</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area"><div class="prompt"></div>
<div class="output_subarea output_stream output_stdout output_text">
<pre>[7 2 1 0 4 1 4 9 6 9 0 6 9 0 1 5 9 7 3 4]
[7 2 1 0 4 1 4 9 5 9 0 6 9 0 1 5 9 7 3 4]
</pre>
</div>
</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="Parameter-Tuning">Parameter Tuning<a class="anchor-link" href="#Parameter-Tuning">&#182;</a></h3><ul>
<li>Way too many parameters - Grid Search approach not time-effective.</li>
<li>1st option: <a href="https://goo.gl/QFjMKu">randomized search</a>.</li>
<li>2nd option: <a href="http://oscar.calldesk.ai/">Oscar</a></li>
<li>Start with common defaults to restrict search space.</li>
</ul>

</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="Number-of-hidden-layers">Number of hidden layers<a class="anchor-link" href="#Number-of-hidden-layers">&#182;</a></h3><ul>
<li>Deep nets have <strong>much better parameter efficiency</strong> than shallow ones. (They can model complex functions with much fewer neurons.)</li>
<li>Largely due to hierarchical nature of most data modeling probs</li>
</ul>

</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="Number-of-neurons-per-hidden-layer">Number of neurons per hidden layer<a class="anchor-link" href="#Number-of-neurons-per-hidden-layer">&#182;</a></h3><ul>
<li>Determined by input dimensions. Ex: MNIST requires 28x28 inputs, 10 outputs</li>
<li>Try increasing # of layers before # neurons/layer.</li>
<li>Simple trick: pick model w/ excessive layers &amp; neurons, use early stopping, regularization, dropout, etc. to prevent overfit.</li>
</ul>

</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="Activation-functions">Activation functions<a class="anchor-link" href="#Activation-functions">&#182;</a></h3><ul>
<li>Defaults:<ul>
<li>use ReLU in hidden layers. Faster &amp; helps avoid GD getting stuck on local plateaus.</li>
<li>use Softmax in output layer (for classification; none needed for regression.) </li>
</ul>
</li>
</ul>

</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[&nbsp;]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span> 
</pre></div>

</div>
</div>
</div>

</div>
    </div>
  </div>
</body>
</html>
